簡體   English   中英

PHP/SQL 查詢 - 在字符串變量中插入變量

[英]PHP/SQL Query - Inserting a Variable Inside a String Variable

嘗試在將用作查詢的字符串變量中插入一個變量。

    $staffID = $_GET["staffID"];

    $conn = mysqli_connect("localhost", "twa095", "twa095de", "factory095");

    if ( !$conn ) 
    {
    die("Connection failed: " . mysqli_connect_error());
    }

    $sql = "SELECT staffName, orderID, orderDate, shippingDate
    FROM purchase INNER JOIN staff ON purchase.staffID = staff.staffID
    WHERE staffID = $staffID // Problem is over here. 
    GROUP BY orderDate"

    $results = mysqli_query($conn, $sql)
    or die ('Problem with query' . mysqli_error($conn));

    ?>

將此作為錯誤:

where 子句中的 queryColumn 'staffID' 問題不明確

另外,有沒有辦法讓我檢查給定的“staffID”(第一行)是否在數據庫內,以及是否不終止腳本並在執行下面的所有內容之前顯示錯誤消息?

實際上, staffID存在於兩個連接表(采購和員工)中。 Mysql 混淆了人員staffID是來自采購表還是人員表。 要解決您的問題,請添加tablename. 到查詢的 where 子句中的人員staffID為:

$sql = "SELECT staffName, orderID, orderDate, shippingDate
FROM purchase INNER JOIN staff ON purchase.staffID = staff.staffID
WHERE staff.staffID = '{$staffID}' // Problem is over here. 
GROUP BY orderDate"

同樣作為最佳實踐,在另一個字符串內的變量周圍添加{} ,如果變量為空,則單引號將正常工作。

其次,要檢查員工 ID 是否已經在表中並返回錯誤,您必須在 if 子句中使用mysqli_num_rows()並向用戶打印錯誤消息:

$sql = "SELECT staffName, orderID, orderDate, shippingDate
FROM purchase INNER JOIN staff ON purchase.staffID = staff.staffID
WHERE staff.staffID = $staffID // Problem is over here. 
GROUP BY orderDate"

$results = mysqli_query($conn, $sql)
or die ('Problem with query' . mysqli_error($conn));

if(mysqli_num_rows($conn,$result)>0){
    echo "Error Message";
    exit;
}

您可能需要在查詢中的變量名稱周圍使用單引號:

WHERE staff.staffID = $staffID // 問題到此為止。 應該改為:

WHERE staff.staffID = '$staffID'

暫無
暫無

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

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