【问题标题】:how can i change this mysql code to pdo?如何将此mysql代码更改为pdo?
【发布时间】:2013-08-05 13:05:59
【问题描述】:

我在 iclude 中有此代码用于连接到数据库 我在这个文件中也有 mysql 连接功能,但我决定将 mysql 更改为 pdo -include.php:

try{
    $conn = new PDO('mysql:host=localhost;dbname=databasename', 'username', 'password');
    return $conn;
}
catch(PDOException $e)
{
    echo 'can not connect to database';
    exit();
}

我在 index.php 中有 mysql 查询,但我想将此代码更改为 pdo

<?php
$sql=mysql_query("SELECT id,col1 FROM tblname ORDER BY col4 DESC, col3 DESC, tzade DESC LIMIT 18");
if(mysql_num_rows($sql)) {
$j=0;
    while($result = mysql_fetch_object($sql)) {

$j++;
if($result->id == $site_id){
?>
<a class="normal_link" href="l.php?lid=<?php echo $result->id; ?>&title=<?php echo title($result->col1);?>">
<div id="jadv">
<div><?php echo $j; ?></div>
<div><?php echo $result->col1; ?></div>
</div>
</a>
<?php
}
else{
?>
<a class="normal_link" href="l.php?lid=<?php echo $result->id; ?>&title=<?php echo title($result->col1);?>">
<div id="jadva">
<div id="jad"><?php echo $j; ?></div>
<div id="jad"><?php echo $result->col1; ?></div>
</div>
</a>
<?php
}
}
}
?>

如何将此代码中的 mysql 查询更改为 pdo?

【问题讨论】:

  • 你为什么要返回一个简单的try {} 块?
  • 我是初学者,请帮我提出其他建议

标签: mysql pdo


【解决方案1】:
  1. 阅读一些教程(甚至有很多here on SO
  2. 运行一些简单的查询来熟悉 PDO
  3. 从重写开始。

【讨论】:

    【解决方案2】:

    您应该阅读一些关于 PDO 的文档并做一些教程。但为了帮助您,这里有一个从 PDO 开始的非常简单的示例:

    <?php
    $connexion = new PDO("mysql:host=$PARAM_hote;dbname=$PARAM_db_name", $PARAM_user, $PARAM_pwd); // DB connexion
    
    $results=$connection->query("SELECT member FROM member ORDER BY member ASC"); // retrieving all entries from member table 
    $results->setFetchMode(PDO::FETCH_OBJ); // retrieving results as objects
    while( $lines= $results->fetch() ) // retrieving list of member
    {
            echo 'user: '.$lines->member.'<br />'; // displaying members
    }
    $results->closeCursor(); // close results cursor
    ?>
    

    这里有一个更复杂的参数(准备查询):

    <?php
    // connection opening ...
    
    $prepared_query=$connecion->prepare("SELECT id FROM member WHERE member_id= :id"); // query prepare
    $prepared_query->execute(array( 'id' => 1 ));
    $lines=$prepared_query->fetch(PDO::FETCH_OBJ);
    echo $lines->id.'<br />';
    ?>
    

    这是我的一个旧样本,希望对您有所帮助。

    【讨论】:

      【解决方案3】:

      类似这样的:

      <?php
      $sql = "SELECT id,col1 FROM tblname ORDER BY col4 DESC, col3 DESC, tzade DESC LIMIT 18 ";
      $sth = $conn->query($sql);
      $sth->setFetchMode(PDO::FETCH_ASSOC);
      
      if ($count = $sth->rowCount() > 0){
      $j=0;
          while ($row = $sth->fetch()) {
      
      $j++;
      if($row['id'] == $site_id){
      ?>
      <a class="normal_link" href="l.php?lid=<?php echo $row['id'] ?>&title=<?php echo title($row['col1']);?>">
      <div id="jadv">
      <div><?php echo $j; ?></div>
      <div><?php echo $row['col1'] ?></div>
      </div>
      </a>
      <?php
      }
      else{
      ?>
      <a class="normal_link" href="l.php?lid=<?php echo $row['id'] ?>&title=<?php echo title($row['col1']);?>">
      <div id="jadva">
      <div id="jad"><?php echo $j; ?></div>
      <div id="jad"><?php echo $row['col1'] ?></div>
      </div>
      </a>
      <?php
      }
      }
      }
      ?>
      

      【讨论】:

      • 你从选择中得到结果?
      • 我发现问题我使用不带“”的选择但 $row['id'] === $site_id 没有检测到,我将 === 更改为 == 并且工作
      • 重要吗?在 $row[] 之后?
      • 好的,抱歉,如果两个不同的类型不同,运算符 == 会在它们之间进行强制转换,而 === 运算符执行“类型安全比较”。这意味着只有当两个操作数具有相同的类型和相同的值时,它才会返回 true。因此,如果您将整数与字符串 1 === "1" 进行比较,则始终返回 false。
      • 在这种情况下是可选的,但是.. stackoverflow.com/questions/2544792/…
      猜你喜欢
      • 2019-09-04
      • 1970-01-01
      • 2019-12-09
      • 1970-01-01
      • 1970-01-01
      • 2020-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多