簡體   English   中英

使用PHP,MYSQL進行動態查詢

[英]Dynamic query using PHP, MYSQL

我正在嘗試建立一個動態鏈接,該鏈接會根據項目ID更改數據庫查詢。

因此,如果單擊鏈接“ ID = X”,它將帶您到顯示有關該項目的更多信息的下一頁。 這是我的索引頁面上鏈接的代碼:

<a href="details.php?ID= <?php print $row['ID']?> "> Click here </a>

哪個工作正常。 由於某種原因,問題似乎出在我的WHERE語句中

<?php $myQuery = "SELECT * FROM test"; 
      $myQuery .= "WHERE ID=" . $_GET['ID']; 

$result = $con->query($myQuery);
`if (!$result) die('Query error: ' . mysqli_error($con)); ?>

在這里,我顯示該特定數據庫項的元素...

<?php

while($row = mysqli_fetch_array($result))
{ 
?> 
        <?php print $row['image'] ?>     
        <?php print $row ['ID']?>
        <?php print $row['description'] ?>

<?php
}
?>  

例如,當我單擊ID = 1的項目時,它會顯示一條錯誤消息,內容為“查詢錯誤:您的SQL語法有錯誤;請查看與您的MariaDB服務器版本相對應的手冊,以找到在'附近使用正確的語法” = 1'在第1行“

我真的很陌生,這是我第一次在這個網站上發帖,所以如果有人可以幫助我,真是太好了..謝謝

您的查詢現在將為SELECT * FROM testWHERE ID=..

表名和WHERE語句之間必須有一個空格。

我認為這樣寫起來更清楚,而且出錯的可能性也更少:

<?php $myQuery = "
      SELECT *  
        FROM test
       WHERE ID= $_GET['ID'];
"; 
...

盡管在生產中您當然會使用准備好的語句

在SQL中添加該空間將按原樣修復您的查詢,但是正如其他人所說的那樣,您的代碼並不安全,應改用准備好的語句。 當您切換到准備好的語句時,由於您已添加到鏈接的所有額外空間,您的查詢將再次中斷。 正確修復...

1)刪除鏈接中所有不必要的空格。

<a href="details.php?ID=<?php print $row['ID']?>"> Click here </a>

2)使用准備好的語句: 請參見此處

暫無
暫無

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

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