mysql结果变成了更高级的mysqli函数

时间:2013-01-16 16:56:29

标签: php mysql mysqli

我正在将我的小项目从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迁移到那个特定的函数中,我知道代码在所有方面都是错误的如果可以的话,可以说。

2 个答案:

答案 0 :(得分: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)。

答案 1 :(得分: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);
}

这很简单,我仍然可以坚持使用我的代码而无需集成其他脚本:)