我想在数据库中显示tableA中的某些数据,但只显示与tableB中用户位置相似的位置的数据。
我正在使用下面的代码,但是我收到以下错误:'where子句'中的未知列'Amsterdam'。
我使用的代码是:
$query = 'SELECT * FROM tableA WHERE `city` LIKE '.$user['city'].' ORDER BY `id` DESC';
$result = mysql_query($query, $conn) or die(mysql_error());
$row_result = mysql_fetch_assoc($result);
echo $row_result['name'];
您认为错误是什么?
答案 0 :(得分:2)
您需要将$user['city']
的值与单引号连接起来。
假设这个城市是阿姆斯特丹,你的目标是一个SQL语句:
SELECT * FROM tableA WHERE `city` LIKE 'Amsterdam' ORDER BY `id` DESC
但你所产生的是:
SELECT * FROM tableA WHERE `city` LIKE Amsterdam ORDER BY `id` DESC
所以MySQL将城市的名称视为表格列,因为它没有被封闭。 您的代码必须是:
$query = "SELECT * FROM tableA WHERE `city` LIKE '".$user['city']."' ORDER BY `id` DESC";
$result = mysql_query($query, $conn) or die(mysql_error());
$row_result = mysql_fetch_assoc($result);
echo $row_result['name'];
上面的示例使用双引号括起静态文本,但您可以通过转义需要形成字符串值的单引号来使用单引号:
$query = 'SELECT * FROM tableA WHERE `city` LIKE \''.$user['city'].'\' ORDER BY `id` DESC';
答案 1 :(得分:1)
city
是一个文本字段。因此,SQL解析器需要文本,必须使用引号。
"' $用户['城市']'"
答案 2 :(得分:1)
您可能希望在$ user ['city']附近添加其他引号,如下所示:
$query = 'SELECT * FROM tableA WHERE `city` LIKE `'.$user['city'].'` ORDER BY `id` DESC';
答案 3 :(得分:0)
正如其他人所说,你错过了$user['city']
除此之外,我是否可以建议您停止使用已被弃用的mysql_
功能。
如果你转到mysqli_
或PDO::
来电,你就可以开始使用准备好的陈述,这会让生活变得更轻松,实际上可能让你有理由去思考“我是如何应对的没有这些?“