gpt4 book ai didi

php - 从 mysql_connect 切换到 PDO : mysql_num_rows() expects parameter 1 to be resource

转载 作者:行者123 更新时间:2023-11-29 05:23:49 26 4
gpt4 key购买 nike

我有使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com