У меня есть массив, представляющий предложение WHERE моего SQL-запроса.
$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», а затем вернуть строку. Наконец, поставьте строку в основную функцию:
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; }
с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; }
Правильно ли это или может быть достигнуто более чистое и профессиональное?
Спасибо за помощь.
Я думаю, это выглядит довольно хорошо; Мне это нравится. Я предполагаю, что secure()
защищает от SQL-инъекции. Я не вижу ничего, что мог бы изменить.
Вы можете взять фигурные скобки из цикла for с момента его одного заявления, но это не biggy
foreach ($qWhere as $key=>$value) $fields[] = sprintf("%s = '%s'", $key, secure($value));