我正在编写一些 SQL 并使用 AdoDb 连接到我的数据库并运行查询等。我正在使用参数化查询并遇到了障碍。
它们是一种将值数组传递给 AdoDb/MySql 中的 in_clause 进行参数化的方法。
我的问题是,如果我传递一个准备好的字符串作为参数,即'测试','测试2','测试3'它不起作用,因为库或数据库自动转义它并在开头和结尾添加外部引号,因此所有内部引号都会自动转义,因此查询在查找时不会返回任何内容'\'测试\',\'测试2\',\'测试3\''而不是我喂它的东西。
更新了另一种可能的方法来完成此任务
<?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));
?>
我会这样做(因为我在谷歌上搜索了一段时间,谷歌没有找到任何有用的东西):
$count = count($first_names);
$in_params = trim(str_repeat('?, ', $count), ', ');
$query = "
SELECT
mytable_id_pk
FROM
mytable
WHERE
mytable_fname IN ({$in_params});";
$stmt = $DB->Prepare($query);
$result = $DB->Execute($stmt, $first_names);
这应该可以做到...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)