繁体   English   中英

mysql_result进入更高级的mysqli函数

[英]mysql_result into more advanceed mysqli function

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

好吧,您可以尝试以下一种迁移:
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 )。

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

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);
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM