我有使用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连接脚本有一些东西,但我不明白我做错了什么。在localhost上登录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;
}
}
答案 0 :(得分:3)
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';