将数组键和值传递给Mysql查询字符串

时间:2011-11-05 17:23:23

标签: php mysql arrays function foreach

我有一个数组表示我的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;
}

这是正确的方式还是可以更清洁和专业地实现?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我觉得它看起来很不错;我喜欢。我假设secure()保护sql注入。我真的没有看到任何改变。

可以从for循环中取出括号,因为它的一个语句,但那不是大事

foreach ($qWhere as $key=>$value)
    $fields[] = sprintf("%s = '%s'", $key, secure($value));