簡體   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