第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從 mysqli 轉(zhuǎn)換為準(zhǔn)備好的語句

從 mysqli 轉(zhuǎn)換為準(zhǔn)備好的語句

PHP
catspeake 2021-10-22 16:53:37
我試圖將代碼從 mysqli_* 語句轉(zhuǎn)換為準(zhǔn)備好的語句以防止 SQL 注入。以下代碼是我正在嘗試轉(zhuǎn)換的代碼(目前它可以正常工作):$details = mysqli_query($linkDB,"SELECT * FROM ".PREFIX."Issues WHERE id='".$_POST['article']."' AND disabled='0' LIMIT 1");$detail = mysqli_fetch_assoc($details);這是我嘗試轉(zhuǎn)換為準(zhǔn)備好的語句。任何使這更簡潔的方法都將不勝感激(因為我將從 2 行代碼變?yōu)槎嘈校?SQL = "SELECT * FROM ".PREFIX."Issues WHERE id='?' AND disabled='0' LIMIT 1";$PRE = mysqli_stmt_init($linkDB);//if (! $PRE = mysqli_prepare($linkDB, $SQL)) {   (alt attempt)    if (! mysqli_stmt_prepare($PRE, $SQL)) {        echo "<f><msg>ERROR: Could not prepare query: ".$SQL.", ".mysqli_error($linkDB)."</msg></f>";    } else {        mysqli_stmt_bind_param($PRE, "i", $test);        $test = $_POST['article'];        if (! mysqli_stmt_execute($PRE)) {            echo "<f><msg>ERROR: Could not execute query: ".$SQL.", ".mysqli_error($linkDB)."</msg></f>";        } else{            $details = mysqli_stmt_get_result($PRE);            $detail = mysqli_fetch_assoc($details);            mysqli_stmt_close($PRE);        }}上面的代碼不會在 $detail 變量中返回/存儲 db 值,以便稍后在腳本中進(jìn)行處理。我試過注釋掉 mysqli_stmt_close($PRE) 調(diào)用,但這沒有區(qū)別。我感謝您的幫助!
查看完整描述

2 回答

?
寶慕林4294392

TA貢獻(xiàn)2021條經(jīng)驗 獲得超8個贊

代碼中的主要錯誤是'?'查詢中的拼寫錯誤。如果?是在引號內(nèi),則不會將其視為占位符,而是將其視為文字值。


使用 MySQLi 時,您應(yīng)該啟用 MySQLi 異常模式。如果這樣做,則不再需要檢查每個函數(shù)的結(jié)果。您還應(yīng)該使用 OOP 風(fēng)格,因為它不那么冗長,而且不太可能犯下愚蠢的錯誤。


// put this line before you open the MySQLi connection

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);


$stmt = $linkDB->prepare('SELECT * FROM '.PREFIX.'Issues WHERE id=? AND disabled=0 LIMIT 1');

$stmt->bind_param('i', $_POST['article']);

$stmt->execute();

$detail = $stmt->get_result()->fetch_assoc();


查看完整回答
反對 回復(fù) 2021-10-22
?
米脂

TA貢獻(xiàn)1836條經(jīng)驗 獲得超3個贊

如果您不是經(jīng)驗豐富的編碼員,我會推薦 PDO。它是面向?qū)ο蟮?,適合現(xiàn)代的 PHP 編碼方式。


在您的配置文件中,您輸入:


$db = new PDO('mysql:host=localhost;dbname=test', $user, $pass);

還有你的腳本:


$statement = $pdo->prepare('SELECT * FROM '.PREFIX.'Issues WHERE id = :id AND disabled = 0 LIMIT 1';

$statement->execute(['id' => $_POST['article']);

$result = $statement->fetch(PDO::FETCH_ASSOC);


查看完整回答
反對 回復(fù) 2021-10-22
  • 2 回答
  • 0 關(guān)注
  • 184 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號