将php处理程序附加到MySQL的正确语法是什么?

时间:2014-07-26 00:03:30

标签: php mysql

嘿,我有这个片段,我无法为它推断出正确的语法。它帮助我搜索我的数据库,我似乎无法得到它。任何帮助表示赞赏。谢谢!

以下是使用MySQL DB搜索PHP部分的片段

$query = mysql_query("SELECT e.event_name, v.venue_name FROM tie_in.events e LEFT JOIN tie_in.venues v ON v.venue_id = e.venue_id WHERE e.event_name = '%.$uniqueId.%' OR v.venue_name = '%.$uniqueId.%' ORDER BY e.event_time");

我遇到问题的地方是$uniqueId处理程序的包装。我如何用括号等正确地包装它以获得完整函数的正确语法?

谢谢!

2 个答案:

答案 0 :(得分:2)

%通配符匹配的模式需要使用LIKE,而不是=

您可以通过将PHP变量用大括号括起来在字符串中插入它们。

... WHERE e.event_name LIKE '%{$uniqueId}%' OR v.venue_name LIKE '%{$uniqueId}%' ...

注意$uniqueId是在SQL中使用的安全变量。您不想引入SQL注入漏洞。

另外,对于它的价值,the mysql_* functions are deprecated,将在以后的某个版本中从PHP中删除。所以我建议你使用PDO,除非你必须使用mysql_ *,因为你有很多遗留代码。

答案 1 :(得分:0)

删除%,因为使用=

时不支持通配符
$query = mysql_query("SELECT e.event_name, v.venue_name FROM tie_in.events e LEFT JOIN tie_in.venues v ON v.venue_id = e.venue_id WHERE e.event_name = '$uniqueId' OR v.venue_name = '$uniqueId' ORDER BY e.event_time");

或使用LIKE代替=

$query = mysql_query("SELECT e.event_name, v.venue_name FROM tie_in.events e LEFT JOIN tie_in.venues v ON v.venue_id = e.venue_id WHERE e.event_name LIKE '%".$uniqueId."%' OR v.venue_name = '%".$uniqueId."%' ORDER BY e.event_time");