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

标签 php mysql pdo

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

相关文章:

php - 无法检索数据 laravel4(oneToMany)

PHP Soap 非 WSDL 调用 : how do you pass parameters?

php - 计算从 PHP 中的 sql 查询返回的实例数

PHP 准备好的语句无法分配正确的值

mysql - UPDATE 查询后的 PDO rowCount() 能否显示 "no changes made"和 "unexisting row"之间的差异?

php - 有没有办法在 PHP PDO 中使参数可选?

php - 如何在 Laravel 应用程序中使类可全局访问?

MySQL 对 23m 行表的查询有时会挂起并导致速度变慢

php - 如何在 PHP 中使用点作为标点符号而不是附加

mysql - MongoDB 类型从 NumberLong 更新为 String