【发布时间】:2015-03-20 14:28:54
【问题描述】:
我有以下代码:
$DB->newclient(array(
"a" => $_POST["a"],
"b" => $_POST["b"],
"c" => $_POST["c"]
));
function newclient($other = array()){
$keys = array_keys($other);
$columns = implode(",", $keys);
$colVals = implode(",:", $keys);
$sql = $this->dbh->prepare("INSERT INTO `clients` ($columns) VALUES(:$colVals)");
foreach($other as $key => $value){
$value = htmlspecialchars($value);
$sql->bindValue(":$key", $value);
echo $value; // print all values
}
echo $value; // only print first value
$sql->execute();
return true;
}
我需要在循环之后获取所有值,但$value 只包含一个值。
你能帮帮我吗?
更新:
我只想将值插入列中,因此 sql->execute 不起作用,因为我无法获取所有值。 第一列是 id 和自动增量。 如果我调试 sql:
echo "INSERT INTO `clients` ($columns) VALUES($value)";
INSERT INTO `clients` (a,b,c) VALUES(a)
echo var_export($sql->errorInfo());
array (
0 => '',
1 => NULL,
2 => NULL,
3 => NULL,
)
为什么值是空的?
【问题讨论】:
-
echo $value; // only print first value实际上会打印 last 值,因为您的循环只是一遍又一遍地覆盖$value。你真正想做什么? -
感谢您的回答。更新我的问题
-
我发现了我的问题,我在我的数据库中遇到了一个错误,非常抱歉,非常感谢您的帮助