1

我正在将我的小项目从MYSQL数据库升级到MYSQLi,我只剩下 3 个函数需要更新。

这是我的功能MYSQL

function id_from_username($username) {
    $username = sanitize ($username);
    return mysql_result(mysql_query("SELECT ´id´ FROM ´members´ WHERE ´username´ = '$username'"), 0, 'id');
}

我有这段代码,我试图迁移到上面的函数中但没有用:

$result = "SELECT * FROM `settings`";
 if (!$row = $db_connect->query($result)) {
     die('Oops, something went wrong during loading data! Error x010');
 }

我知道我应该公开我尝试过的代码,但问题是我真的不知道如何将其迁移MYSQLi到那个特定的函数中,而且我知道代码在所有可能的方面都是错误的,如果可以这么说的话。

4

2 回答 2

0

那么你可以试试这个迁移:
https ://github.com/colshrapnel/safemysql/blob/master/safemysql.class.php

首先,在脚本前面的某个地方连接:

include 'safemysql.class.php';
$opts = array(
    'user'    => 'user',
    'pass'    => 'pass',
    'db'      => 'db',
    'charset' => 'latin1',
);
$db = new SafeMySQL($opts);

然后用这种方式编写你的函数

function id_from_username($username) 
{
    global $db;
    return $db->getOne("SELECT id FROM members WHERE username = ?s", $username);
}

请注意,这不是纯粹的 mysqli,而是基于它构建的自定义库。
最重要的区别是每个占位符都必须根据它们在查询中的角色来标记它的类型。例如,对于字符串,使用了$username字符串占位符 ( ?s)。

于 2013-01-16T17:15:07.890 回答
0

我找到了正确的答案,代码应该如下:

function id_from_username($username) {
    $username = sanitize($username);
    global $db_connect;

    $result = $db_connect->query("SELECT(id) FROM members WHERE username = '$username'");
    if (false === $result) {
        return false;
    }
    return ($result->num_rows === 1);
}

这很简单,我仍然可以在不集成其他脚本的情况下坚持我的代码 :)

于 2013-01-20T13:52:00.483 回答