因此,我正在尝试创建一个函数,该函数可基于多维数组生成SQL查询字符串。
例:
function createQueryString($arrayToSelect, $table, $conditionalArray) {
$queryStr = "SELECT ".implode(", ", $arrayToSelect)." FROM ".$table." WHERE ";
$queryStr = $queryStr.implode(" AND ",$conditionalArray); /*NEED HELP HERE*/
return $queryStr;
}
$columnsToSelect = array('ID','username');
$table = 'table';
$conditions = array('lastname'=>'doe','zipcode'=>'12345');
echo createQueryString($columnsToSelect, $table, $conditions); /*will result in incorrect SQL syntax*/
如您所见,我正在打印第三行时需要帮助
SELECT ID,用户名FROM表WHERE
姓氏和邮政编码
但应该是印刷
SELECT ID,用户名FROM表WHERE
姓氏='doe'AND邮政编码='12345'
最佳答案
您实际上并不是在破坏多维数组。 $ conditions是一个关联数组。
只需在函数createQueryString()中使用foreach循环即可。这样的事情应该可以工作,请注意,它未经测试。
$terms = count($conditionalArray);
foreach ($conditionalArray as $field => $value)
{
$terms--;
$queryStr .= $field . ' = ' . $value;
if ($terms)
{
$queryStr .= ' AND ';
}
}
注意:为防止SQL注入,对于所使用的DB,应对值进行转义和/或引用(适当/必需)。不要只是复制和粘贴;认为!