<?php
$host = ""; $db_name = ""; $username = ""; $password = "";
try {
$conn = new PDO("mysql:host=".$host.";dbname=".$db_name, $username, $password);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
$json = file_get_contents('');
$obj = json_decode($json, TRUE);
$stmt = $conn->prepare("INSERT INTO item_details (item_id,value,circulation) VALUES (:item_id,:value,:circulation");
foreach($obj['items'] as $key => $index) {
$item_id = $key;
$value = $index['value'];
$circulation = $index['circulation'];
$stmt->bindparam(":item_id", $item_id);
$stmt->bindparam(":value", $value);
$stmt->bindparam(":circulation", $circulation);
$stmt->execute();
}
?>
我已经通过将数据回显到我的循环中的页面进行测试,并且正在检索数据,但是没有信息提交到我的数据库。
答案 0 :(得分:1)
Catalin Minovici对于bindParam是正确的,但是PDO错误并不总是抛出可以捕获的异常,因此如果要检查PDO错误并抛出自己的异常,则try / catch仅对此有用。
您的查询准备中错过了一个括号。
// missing paren...........................................................................................here: v
$stmt = $conn->prepare("INSERT INTO item_details (item_id,value,circulation) VALUES (:item_id,:value,:circulation)");
在php.net上的execute()之后查看documentation for reading PDO query errors
此外,最好将所有结果组合到单个插入操作中,而不是在循环的每次迭代中执行新插入。
答案 1 :(得分:0)
您忘记了值中的右括号: 准备(&#34; INSERT INTO item_details(item_id,value,circulation)VALUES(:item_id,:value,:circulation)&#34;);