为什么预处理语句会在mysql中自然加入?

时间:2012-06-11 04:54:20

标签: mysql join

我有一个自然连接查询,直到我了解到准备好的语句更安全并且它破坏了我的查询。我做了一些研究,并读到准备好的陈述和自然连接不能很好地结合在一起。这是我原来的疑问:

$query = "select * from table1 natural join table2 where table1.id='$id' ";

我需要对查询进行连接,但需要2列才能在表,州和城市中进行匹配。 如何实现这一点并从两个表中选择所有列? 这是我到目前为止但没有工作:

$query = "select * from table1 join table2 on table1.state = table2.state and table1.city = table2.city where table1.id='$id'";

现在我只是尝试使用JOIN ON来使查询工作,然后我想用table.id =?

替换table1.id ='$ id'

1 个答案:

答案 0 :(得分:1)

而不是table1.id = '$id',而不是像你说的那样使用table1.id = ?

然后你运行->execute()

$stmt = $db->prepare($query) or die($db->error);
$stmt->execute(array(123));