嘿,我有这个片段,我无法为它推断出正确的语法。它帮助我搜索我的数据库,我似乎无法得到它。任何帮助表示赞赏。谢谢!
以下是使用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
处理程序的包装。我如何用括号等正确地包装它以获得完整函数的正确语法?
谢谢!
答案 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");