我有使用 mysql_connect 的代码,据我所知,现在已弃用我切换到以下代码(我在本地工作):
<?php
/*** mysql hostname ***/
$hostname = 'localhost';
/*** mysql username ***/
$DBusername = 'admin';
/*** mysql password ***/
$DBpassword = '';
try {
$dbh = new PDO("mysql:host=$hostname;dbname=mysql", $DBusername, $DBpassword);
/*** echo a message saying we have connected ***/
echo 'Connected to database';
}
catch(PDOException $e)
{
echo $e->getMessage();
}
?>
但这现在意味着我的一个函数中断了:
$result = mysql_num_rows($query);
因为,按照脚本返回,连接不工作。我的 PDO 连接脚本有问题,但我不明白我做错了什么。在本地主机上登录 phpMyAdmin 的详细信息是正确的。
function user_exists($username){
$sql = "SELECT `id` FROM `users` WHERE `username` = '".$username."'";
$query = mysql_query($sql);
$result = mysql_num_rows($query);
if($result == 1){
// username does already exist
return true;
}else{
// username doesn't exist in the database
return false;
}
}
最佳答案
PDO 完全独立于 mysql
扩展,您还必须更新您的函数调用。 mysql_query
例如应该是 prepare
的组合和 execute
.
请注意:请使用准备好的语句,您的示例查询是完全不安全的。
要求举个例子:
// initialize PDO
$dbh = new PDO("mysql:host=$hostname;dbname=mysql", $DBusername, $DBpassword);
// Prepare a query
$sql = "SELECT COUNT(*) AS count
FROM users
WHERE username = ?
LIMIT 1";
$statement = $dbh->prepare($sql);
// execute the query
$statement->execute(array($username));
// retrieve the first row
$row = $statement->fetch();
if ($row['count']) echo 'The user exists';
else echo 'The user does not exist';
关于php - 从 mysql_connect 切换到 PDO : mysql_num_rows() expects parameter 1 to be resource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22571368/