在哪里的未知列

时间:2011-05-26 14:09:59

标签: mysql

Client(ID_Client,Name,Surname,number)
Ticket(ID_Ticket,ID_Client,Problem)

以及来自html表单的两个变量(namesurname

我正在执行一个简单的查询,使用ID_Clientclient搜索表name中的surname 在我的php页面(http://phpserver.hensemberger.it/~d2nastasi/Vivaio/Vivaio/Prenotazioni.html)中:

$db=mysql_connect("localhost","user","pwd")or die(mysql_error());
$sel=mysql_select_db("d2") or die(mysql_error());
$name=$_POST['name'];
$surname=$_POST['surname'];  //this two variables arrives with no problem

$query="SELECT ID_Client FROM Client WHERE Name={$name}
AND Surname = {$surname} ";


$ris=mysql_query($query)or die (mysql_error()); //stops here
$array=mysql_fetch_array($ris);

print($array['ID_Client']);

问题是他停止$ ris = .....说错误

'where子句'中的未知列'simone'

2 个答案:

答案 0 :(得分:2)

您需要在SQL中为字符串文字添加引号。

select * from table where name = 'Carl' and lastname = 'Smith';

此外,从原始用户输入的变量(例如POST)构建查询是不安全的。在将它传递给SQL之前使用mysql_real_escape_string()之类的东西。

答案 1 :(得分:0)

您没有引用where值:

$query="SELECT ID_Client FROM Client WHERE Name='{$name}' AND Surname = '{$surname}'";

MySQL感到困惑,认为你想要Surname列与不存在的Simone列相同的行,但是你希望它匹配那个绝对值,因此你需要引号。