2016-03-02 22 views
1

我有一個列BarcodeID(1 2 3 asd)數值正在工作,我得到正確的輸出,但字母表不工作。 它給了我錯誤字母表不是從表格中查詢

未知列「ASD」在「where子句」

這是我使用的查詢代碼。

<?php 

require '../db/connect.php'; 

$id= $_POST['id']; // your post variable 
$sql = "SELECT BarcodeID, Items, Price FROM stockdata WHERE BarcodeID=".mysqli_real_escape_string($con,$id); 

$result = mysqli_query($con,$sql)or die(mysqli_error($con)); 

if(mysqli_num_rows($result)>0) 
{ 
    while($row = $result->fetch_assoc()) 
    { 
     echo "<tr><td>"." "."</td>" ."<td>". $row["BarcodeID"]."</td>"."<td>" ."Product: "."</td>" . "<td>".$row["Items"]."</td>" ."<td>" ." price: " ."</td>"."<td class='price'>". $row["Price"]."</td>"."</tr>"; 
    } 
} 
else 
{ 
     echo "No results found"; 
} 
mysqli_close($con); 

?> 

回答

1

更改此:

$sql = "SELECT BarcodeID, Items, Price FROM stockdata WHERE BarcodeID=".mysqli_real_escape_string($con,$id); 

這樣:

$sql = "SELECT BarcodeID, Items, Price FROM stockdata WHERE BarcodeID='".mysqli_real_escape_string($con,$id)."'"; 

神奇的發生在你的價值之前和之後加入'mysqli_real_escape_string($con,$id)

編輯:

它與'一起使用的原因是,如果您不將它標記爲string,則MySql無法解釋string的值。 'YOURVALUE'不只是說「嗨!我是string,所以我把它解釋爲string!」。

給出integer只能工作的原因是因爲MySql可以解釋任何integer而不標記它們。

所以你的錯誤發生是因爲它試圖解釋string"asd"而不知道它是string

很基本的東西。

我希望我解釋得很好(不是我的母語)。

+0

魔法奏效。但我不知道爲什麼。一點解釋會很有用。 –

+0

看看我的編輯。 –