将不同的代码从MySQL转换为MySQLi

时间:2014-02-18 21:11:48

标签: php mysql mysqli

我目前正在修改我的代码,并且遇到了一些问题,所以我想问一下,看看是否有人可以帮我处理新代码......

首先,我的代码周围有很多 mysql_result(),想知道如何为新进程编写代码。这里有一个我的函数的示例需要更改的代码,我已经做了一些我需要知道如何重写的 mysql_result()部分..

function user_exists($db,$username) {
    $username = sanitize($db,$username);
    $sql = $db->query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username'");

    return(mysql_result($sql, 0) == 1) ? true : false;
}

另外,当我在这里时,我也可以问...我也有这个功能,以及清理代码,但我一直在读 mysql_real_escape_string 并不是那么安全。我已经读过我应该使用预处理语句,我只是不确定如何将它实现到我的代码中。所以sanitize函数基本上只是 mysql_real_escape_string() ..

function sanitize($db, $data) {
    return mysqli_real_escape_string($db, $data);   
}

那么我怎么能做到这一点呢?因为我正在阅读它只是在...之类的查询之前放置准备

$sql = $db->prepare("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username'");

所以我的问题是,有人可以帮助我更改这些代码以更正最新版本吗?

1 个答案:

答案 0 :(得分:0)

您要使用的是PDO类和绑定值(http://www.php.net/manual/en/class.pdo.php)。

所以类似下面的内容应该有效:

$stmt = $db->prepare("SELECT 1 FROM users WHERE username = ?");
$stmt->execute([$username]);
return $stmt->fetchColumn();