[英]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.