错误中的数组到字符串转换

时间:2014-08-11 17:16:20

标签: php arrays

$keyNames = array();
$keyVals = array();

foreach ($varArray as $key => $name) { 

    $keyNames .= $key . ', ';
}

foreach ($varArray as $key => $val) { 

    $keyVals .= '\'' . $val. '\', ';
}

// build query
$sql = "INSERT INTO Organizations (";
$sql .= rtrim($keyNames, ", ");
$sql .= ") VALUES (";
$sql .= rtrim($keyVals, ", ");
$sql .= ");";
echo "<div style=\"padding:5px;background-color:#efefef\">".$sql."</div>"; // this output is working

我试图让上面的代码无错误地运行。 IT目前有效,但即使我得到了我期待的结果,我也会收到“数组到字符串转换”错误。

我正在尝试从数组元素构建一个sql查询。两个循环都会抛出一个错误但是echo SQL正在给我我想要的东西。我只是想摆脱这个错误。我已经尝试过(字符串)和(数组)以及implode()和join()但是我无法清除错误。

你能指出我正确的方向吗?

3 个答案:

答案 0 :(得分:0)

错误来自于尝试将字符串连接到数组上。因为您严格使用$keyNames$keyValues作为字符串,所以不需要将它们初始化为数组 - 只需使用字符串,错误就会消失。

更改

$keyNames = array(); 
$keyVals = array();

$keyNames = $keyVals = '';

答案 1 :(得分:0)

你的程序似乎没用,因为有implode函数来合并数组的元素:

$keyNames  = implode(',', array_keys($varArray));
$keyValues = '"' . implode('","', $varArray) . '"';

和SQL:

$sql = 'INSERT INTO Organizations (' . $keyNames . ') VALUES (' . $keyValues . ')';

答案 2 :(得分:0)

错误是因为您将变量初始化为数组,然后将字符串连接到它们。你想要的是:

$keyNames = implode(', ', array_keys($varArray));
$keyVals = implode(', ', array_map(function($val) {
    return "'$val'";
}, array_values($varArray)));