因此,我正在尝试创建一个函数,该函数可基于多维数组生成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,应对值进行转义和/或引用(适当/必需)。不要只是复制和粘贴;认为!

08-25 22:19