php - 在下面的示例中将 mysql 转换为 mysqli

标签 php mysql mysqli

我有一个旧的 mysql 代码可以在应用程序中正常工作:

  $query = "
SELECT * FROM Tutor t  
WHERE 
(t.Tutorusername = '".mysql_real_escape_string($tutorusername)."')
AND
(t.Tutorpassword = '".mysql_real_escape_string($tutorpassword)."')
";


$num = mysql_num_rows($result = mysql_query($query));


while($row = mysql_fetch_array($result))
  {

  ...

}

但我现在想从 Mysql 改用 mysqli。我的问题是下面的 mysqli 代码是否完全正确并且与上面的 mysql 代码相同?

$query = $mysqli->prepare("
    SELECT * FROM Tutor t  
    WHERE 
    (t.Tutorusername = '".mysqli_real_escape_string($tutorusername)."')
    AND
    (t.Tutorpassword = '".mysqli_real_escape_string($tutorpassword)."')
    ");

    $query->bind_result($Tutor);

    $num = $query->num_rows($result = $query->execute());


    while($row = $result->fetch())
      {

...

}

最佳答案

此处无需使用 preapre(),因为您正在连接 sql 字符串。

$sql="SELECT * FROM Tutor t
        WHERE 
        t.Tutorusername='".mysqli_real_escape_string($tutorusername)."'
        AND 
        t.Tutorpassword = '".mysqli_real_escape_string($tutorpassword)."'");

$result=$mysqli->query($sql);
if($result)
{
 $row=$result->fetch_row();
 if($row)
    print_r($row);
}

对于 prepare() 方法,您必须指定参数:

  $sql="SELECT * FROM Tutor t 
          WHERE t.Tutorusername=? AND t.Tutorpassword=?";

   $stmt=$mysqli->prepare($sql);
   $stmt->bind_param("s",$tutorusername);
   $stmt->bind_param("s",$tutorpassword);

   $stmt->execute(); 

   //I presume that the table "T" has three columns
   $stmt->bind_result($col1,$col2,$col2);
   while($stmt->fetch())
   {
     echo "<br/>", $col1,$col2,$col3;
    }

PS:阅读 mysqli API 的 PHP 手册。

关于php - 在下面的示例中将 mysql 转换为 mysqli,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10957919/

相关文章:

php - 更改 WooCommerce 订阅的订单按钮上的文本

mysql - 可以在 MySQL 日期时间字符串中包含 'T' 吗?

php - MySQLiprepared statements 错误报告

php - 捕获并处理 MySQL 和 PHP 中的超时错误

PHP 事务和 mysqli_insert_id

php - Mysqli - 相等和不同的表达式

php - laravel 如何将对象传递给方法工作?

PHP 7 - 不支持声明 'strict_types'

PHP风格问题: "caching" object/array values in a variable?

mysql - SQL 查询查找连续行中的数字序列