我尝试使用PDO语句对数据库中的新值进行深思熟虑。我有错误 无法理解问题是什么............... 这里有错误:
Notice: Trying to get property of non-object in D:\wamp\www\OOPCMS_PROJECT\trancaction.php on line 68
Notice: Trying to get property of non-object in D:\wamp\www\OOPCMS_PROJECT\trancaction.php on line 69
Notice: Trying to get property of non-object in D:\wamp\www\OOPCMS_PROJECT\trancaction.php on line 70
还有一个错误:
`Column 'name' cannot be null`
这是我的代码:
$fruits = array( "name"=>"apple","color"=>"red","colories"=>"288");
try {
$db->beginTransaction();
$sql = 'INSERT INTO fruit
(name, colour, calories)
VALUES (?, ?, ?)';
$sth = $db->prepare($sql);
foreach ($fruits as $key=>$fruit) {
$sth->execute(array(
$fruit->name,
$fruit->colour,
$fruit->calories,
));
}
$db->commit();
} catch (PDOException $e) {
$db->rollBack();
echo $e->errorInfo[2];
}
答案 0 :(得分:1)
不要使用foreach循环:
$sth->execute(array(
$fruits['name'],
$fruits['color'],
$fruits['colories'],
));
问题是你迭代$fruits
:
第一次迭代($key
为"name"
且$fruit
为"apple"
)
您尝试访问"apple"->name
,"apple"->colour
,"apple"->calories
,但"apple"
不是数组。
第二次迭代($key
为"color"
且$fruit
为"red"
)
您尝试访问"red"->name
,"red"->colour
,"red"->calories
,但"red"
不是数组。
第3次迭代($key
为"colories"
且$fruit
为"288"
)
您尝试访问"288"->name
,"288"->colour
,"288"->calories
,但"288"
不是数组。
另请注意,有时您会使用“c a lories”,有时会使用“c o lories”,有时会使用“颜色”,但有时会使用“colo u < / b> R”。
答案 1 :(得分:1)
您正在创建一个名为fruit的变量,它是一个数组,但是稍后当您访问水果的值时,您就像对象一样使用它。
抛弃foreach循环并访问数组,如:
$fruit['name'],
$fruit['colour'],
$fruit['calories'],