Php 从mysql_connect切换到PDO:mysql_num_rows()期望参数1是资源

Php 从mysql_connect切换到PDO:mysql_num_rows()期望参数1是资源,php,mysql,pdo,Php,Mysql,Pdo,我有使用mysql_connect的代码,据我所知,该代码现在已被弃用,我切换到以下代码(我在本地工作): 因为,在脚本返回后,连接不起作用。我的PDO连接脚本有问题,但我不明白我做错了什么。详细信息对于在本地主机上登录phpMyAdmin是正确的 function user_exists($username){ $sql = "SELECT `id` FROM `users` WHERE `username` = '".$username."'"; $query

我有使用mysql_connect的代码,据我所知,该代码现在已被弃用,我切换到以下代码(我在本地工作):

因为,在脚本返回后,连接不起作用。我的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扩展,您还必须更新函数调用<例如,code>mysql\u查询应该是和的组合

请注意:请使用预先准备好的语句,您的示例查询是完全不安全的

例如,有人要求:

// 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';

PDO有自己的检查行计数的方法。例如,当执行平面查询时,它会返回结果数@Rottingham除了PDO之外,还有什么可以用于我以前的函数吗?这是我使用PHP的第一段代码,我真的不知道我做错了什么,也不知道该去哪里。PDO+
mysql.*
functions=不是一个好的组合。我需要更新哪些函数才能使其正常工作?我不明白这个错误。@Francesca你必须全部更改,请阅读手册:)以什么方式?您能提供需要更改的内容吗?他们怎么了?如有任何信息,将不胜感激。我以前从未使用过PHP或数据库。这是与mysql_connect一起使用的。继续使用它是否存在重大问题?因为它是有效的,而这是无效的。@Francesca我刚刚添加了一个例子。并且:
mysql
扩展不应再使用,将来可能会在没有任何进一步警告的情况下删除。@Francesca要了解有关我的示例以及PDO的更多信息,请阅读手册:
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;
        }
    }
// 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';