我有一个数组表示我的SQL查询的WHERE子句。
$qWhere= array("cName" => "Turgay Metal", "cTelephone" => "5556162");
我的功能是:(简化)
<?php
function getAll($tableName,$qWhere="") {
$qWhere = $qWhere == "" ? $qWhere : (" WHERE " . $qWhere);
$sql = "SELECT * FROM $tableName $qWhere";}
所以我需要编写另一个函数来将foreach
作为$k = '$v'
来序列化数组,然后加入“AND”然后返回字符串。最后将字符串提供给main函数:
function arr2sql($qWhere) {
foreach ($qWhere as $key=>$value) { $fields[] = sprintf("%s = '%s'", $key, secure($value));}
$field_list = join(' AND ', $fields); unset($qWhere);
return $field_list;
}
这是正确的方式还是可以更清洁和专业地实现?
感谢您的帮助。
答案 0 :(得分:0)
我觉得它看起来很不错;我喜欢。我假设secure()
保护sql注入。我真的没有看到任何改变。
你可以从for循环中取出括号,因为它的一个语句,但那不是大事
foreach ($qWhere as $key=>$value)
$fields[] = sprintf("%s = '%s'", $key, secure($value));