这是我的尝试:
$query = $database->prepare('SELECT * FROM table WHERE column LIKE "?%"');
$query->execute(array('value'));
while ($results = $query->fetch())
{
echo $results['column'];
}
Run Code Online (Sandbox Code Playgroud) 我试图通过php的PDO类(mysql驱动程序)进行搜索.我有以下查询使用MySQL客户端(更改表名以保护无辜):
SELECT hs.hs_pk,
hs.hs_text,
hs.hs_did,
hd.hd_did,
hd.hd_text,
hv.hv_text,
hc.hc_text
FROM hs
LEFT JOIN hd
ON hs.hs_did = hd.hd_did
LEFT JOIN hd
ON hd.hd_vid = hv.hv_id
LEFT JOIN hc
ON hd.hd_pclass = hc.hc_id
WHERE hs.hs_text LIKE "%searchTerm%"
LIMIT 25;
Run Code Online (Sandbox Code Playgroud)
无论我使用什么搜索词,这都像魅力一样.但是,当我转移到PHP时,我无法让它返回任何东西.我已经尝试了几种看似合乎逻辑的不同语法,但我尝试过的都没有用.这是我现有的代码:
$handle = fopen('/foo/bar/test.log', 'w+');
fwrite($handle, "doSearch, with search term: $searchTerm\n");
$sql =
'SELECT hs.hs_pk,
hs.hs_text,
hs.hs_did,
hd.hd_did,
hd.hd_text,
hv.hv_text,
hc.hc_text
FROM hs
LEFT JOIN hd
ON hs.hs_did = hd.hd_did
LEFT JOIN hd
ON hd.hd_vid = hv.hv_id
LEFT JOIN hc
ON hd.hd_pclass …Run Code Online (Sandbox Code Playgroud) psycopg2是否有一个函数来转义Postgres 的LIKE操作数的值?
例如,我可能想要匹配以字符串"20%of all"开头的字符串,所以我想写这样的东西:
sql = '... WHERE ... LIKE %(myvalue)s'
cursor.fetchall(sql, { 'myvalue': escape_sql_like('20% of all') + '%' }
Run Code Online (Sandbox Code Playgroud)
我可以在这里插入一个现有的escape_sql_like函数吗?
(类似的问题如何显式引用字符串值(Python DB API/Psycopg2),但我找不到答案.)