簡體   English   中英

將mysql_ *轉換為mysqli_ *問題

[英]Converting mysql_* to mysqli_* issue

我正在使用MySQLConverterTool轉換我的Web應用程序,

我面臨的第一個問題是代碼變得越來越大,我什至不明白那意味着什么? 以前這是非常小的代碼,現在我看到這太大了。

//old code
$ask_id = mysql_real_escape_string($_POST['ask_id']);

//after convert
$ask_id = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $_POST['ask_id']) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));

它的工作正常,但我想知道它是mysqli_*正確方法還是需要在線解決一些問題或錯誤?

我也想知道如何使這部分安全

if (isset($_POST['asking-money'])) {
    $dailyBonus = 10000;
    $update = mysqli_query($GLOBALS["___mysqli_ston"], "UPDATE users SET ask_time='$newtime', bonus='dailyBonus'  WHERE id='$userid'");
// some more calculation
}

代碼的第一位(粗略地)看起來像添加了一條巨大的三元語句,以檢查所使用的變量是否至少已設置,但除此之外,您應該只能使用:

mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $_POST['ask_id'])

為了確保SQL查詢的安全性,請嘗試使用預處理語句,而不要直接使用變量查詢

mysqli_prepare

對於mysqli_ *部分,以前用mysql_ *完成的大多數事情都與新前綴幾乎相同,因此,很可能沒有問題,並且如何確保它的安全,只需評估並准備所有內容即可。在查詢中使用用戶之前傳遞給用戶的參數,換句話說,在任何情況下都從不直接在查詢中使用用戶輸入。 除此之外,代碼對我來說似乎還不錯。

第一個代碼是一個三元語句 (if / else的簡稱)。 我認為這太多了。

如果可以使用PDO ,則建議使用PDO及其准備好的語句 它非常安全且易於處理。

順便說一句:盡量避免使用MySQLConverterTool 數月后很難進入此代碼。 ķEEP I T 小號集市和S imple! :-)

祝好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM