簡體   English   中英

將此MySQLi查詢編寫為預准備語句

[英]Writing this MySQLi query as a prepared statement

我有一個現有的MySQLi查詢:

$conn = dbConnect('query');
$galNumb = "SELECT COUNT(pj_gallery_id) FROM pj_galleries WHERE project = {$project}";
$gNumb = $conn->query($galNumb);
$row = $gNumb->fetch_row();
$galTotal = $row[0];

這會計算每個項目的庫的數量,這些庫的數量與$ project中包含的查詢字符串中的值相匹配。

它的工作完美但與准備好的聲明相比並不安全。 我已經研究了兩天,無法學習如何將此陳述作為准備好的陳述。 任何和所有幫助將被瘋狂地贊賞。

更新:我在我的褲子座位上飛。 我只需要展示如何將上面的代碼編寫為預處理語句。 這種事情並沒有像學習PHP那樣引起我的大腦的共鳴,我只是沒有得到任何這一點。 PHP手冊令人困惑,似乎是為那些已經了解PHP的人編寫的。

簡而言之,我需要上面代碼的預准備語句版本,以便我可以在頁面上回顯結果。 目前,我的數據庫中的數字應為3,並且始終返回1。

我希望我知道的更多,以便我能更好地表達我的問題,但唉,我還在學習。 我很抱歉。

更新2:根據建議和研究,我編寫了這個查詢,但它始終返回值1,無論數據庫中實際存在什么:

$galNumb = "SELECT COUNT(pj_gallery_id) FROM pj_galleries WHERE project_part = ?";
$stmt = $conn->prepare($galNumb);
$stmt->bind_param('i', $project);
$gNumb = $stmt->execute();

同樣,我想做的就是COUNT每個項目中有多少個畫廊。 我知道這應該很簡單但不適合我。 目前DB中有1個項目,有3個畫廊。 查詢應該返回3。

這很簡單。 這將准備一個sql語句,執行它並獲取第一行。

<?php

// create the prepared statement
$stmt = $conn->prepare('SELECT COUNT(pj_gallery_id) FROM pj_galleries WHERE project = ?');

// bind a variable to the statment
// the character denotes the type of the variable
// 's' for string
// 'i' for integer
$stmt->bind_param('i', $project);

// execute the query
$stmt->execute();

// get the result variable
$result = $stmt->get_result();

// fetch the row
$row = $result->fetch_row();

if ($row) {
    echo "The count is " . $row[0]; 
}

?>

文檔非常簡單。 底部有一個代碼示例。

http://php.net/manual/en/mysqli.prepare.php

$stmt = $dbConnection->prepare('SELECT COUNT(pj_gallery_id) FROM pj_galleries WHERE project = ?');
$stmt->bind_param('s', $project);

$stmt->execute();

暫無
暫無

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

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