如何将 mysql_num_rows 等函数更改为 mysqli? [复制]
Posted
技术标签:
【中文标题】如何将 mysql_num_rows 等函数更改为 mysqli? [复制]【英文标题】:How to change mysql_num_rows etc functions to mysqli? [duplicate] 【发布时间】:2019-03-08 07:53:15 【问题描述】:当我将我的php
文件发布到一个免费的网络托管站点时,我遇到了一个错误。出现的错误如下:
下面是我的项目的代码。
$sql= "SELECT * FROM user WHERE staff_id='$staff_id' AND password='$password'";
$query = mysql_query($sql) or die("Error: " . mysql_error()); //this is error on line 42
$row = mysql_num_rows($query);
我不确定错误是什么,因为我是自学 PHP 的。希望你们能指出我应该做些什么改变。提前致谢!
【问题讨论】:
在您的文本编辑器中,将所有 mysql 替换为 mysqli 您的 mysql_query 还需要数据库连接以及 sql 查询。所以,mysqli_query($dbConnection, $sqlCode) 【参考方案1】:首先,正如您在标题中所建议的,出于安全原因使用 mysqli,甚至更好的是 PDO。
使用 mysqli:(更新)
$stmt = $conn->prepare("SELECT COUNT(*) FROM user WHERE staff_id = :staff_id AND password = :password");
$res = $stmt->execute(["staff_id" => $staff_id, "password" => $password);
$row = mysqli_num_rows($res);
使用 PDO:
$stmt = $conn->prepare("SELECT COUNT(*) FROM user WHERE staff_id = :staff_id AND password = :password");
$res = $stmt->execute(["staff_id" => $staff_id, "password" => $password);
$row = $res->fetchColumn();
$conn
是您的数据库链接。 PDO 版本假定您不需要行,而只需要计数。如果有人告诉你,不要在 SELECT
查询上使用 rowCount
,这是不可靠的。
【讨论】:
感谢您的解释!非常清晰易懂。非常感谢! 您也应该在 mysqli 中使用准备好的语句;只是在最后抛出一个i
并不能让它更安全。
@deceze 你是对的,更新了答案。
太棒了!除了 mysqli 的 prepare 不能那样工作:php.net/manual/en/mysqli.prepare.php
@deceze 你不能用 mysqli 将参数放入执行中?【参考方案2】:
$sql= "SELECT * FROM user WHERE staff_id='$staff_id' AND password='$password'";
$query = mysql_query($sql) or die("Error: " . mysql_error()); //this is error on line 42
$row = mysql_num_rows($query);
试试这个
$sql= "SELECT * FROM user WHERE staff_id='$staff_id' AND password='$password'";
$query = mysqli_query($con, $sql) or die("Error: " . mysqli_error($con)); // $con is the connection to database like // $con = mysqli_connect("localhost","my_user","my_password","my_db");
$row = mysqli_num_rows($query);
【讨论】:
嗨@ParvejAlam,您能否对您的回答进行更多解释? 谢谢!!我理解这段代码背后的逻辑! 如果您能理解,我将不胜感激。但根据我的意见,新的 php 版本中的语法已更改。 :)以上是关于如何将 mysql_num_rows 等函数更改为 mysqli? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何将此javascript函数更改为Jquery [关闭]
在 C++ 中,主函数是编程的入口点,我如何将其更改为其他函数?
从 SQL 函数获取单个值时,如何将 NULL 更改为 0?
如果在 TableView didSelectRowAtIndexPath 函数中选择了其他行,如何将图像更改为以前的状态?