【发布时间】:2012-05-28 17:41:20
【问题描述】:
我正在编写一些 SQL 并使用 AdoDb 连接到我的数据库并运行查询等。我正在使用参数化查询并遇到了障碍。
他们是一种将值数组传递给 AdoDb/MySql 中的 in_clause 以进行参数化的方法。
我的问题是,如果我将准备好的字符串作为参数传递,即 'test','test2','test3' 它不起作用,因为库或数据库会自动转义它并添加外部开头和结尾的引号,因此所有内部引号都会自动转义,因此查询在查找 '\'test\',\'test2\',\'test3\'' 时不返回任何内容而不是我喂它的。
更新了另一种可能的方法来完成此操作
<?php
$in_clause = implode(",", $first_names);
$query = "
SELECT
mytable_id_pk
FROM
mytable
WHERE
FIND_IN_SET(mytable_fname," . $DB->Param('first_names') . ")"
$stmt = $DB->Prepare($query);
$result = $DB->Execute($stmt,array($in_clause));
?>
【问题讨论】:
标签: php mysql sql prepared-statement adodb