我有一个带有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);
?>
答案 0 :(得分: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
标记为string
,则MySql无法解释'YOURVALUE'
值。 string
只是说“嘿!我是string
,所以将我解释为integer
!”。
给integer
只有效的原因是因为MySql可以解释任何string
而不标记它们。
所以您的错误发生了,因为它试图解释"asd"
值string
而不知道它是^[a-zA-Z][a-zA-Z ''.-]+[a-zA-Z]$
。
非常基本的东西。
我希望我解释得很好(不是我的母语)。