PHP PDO准备插入不在数据库中插入值,返回错误

时间:2013-11-23 16:08:08

标签: php mysql pdo

我尝试使用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];

 }

2 个答案:

答案 0 :(得分:1)

不要使用foreach循环:

$sth->execute(array(
   $fruits['name'],
   $fruits['color'],
   $fruits['colories'],
));

问题是你迭代$fruits

  1. 第一次迭代($key"name"$fruit"apple"

    您尝试访问"apple"->name"apple"->colour"apple"->calories,但"apple"不是数组。

  2. 第二次迭代($key"color"$fruit"red"

    您尝试访问"red"->name"red"->colour"red"->calories,但"red"不是数组。

  3. 第3次迭代($key"colories"$fruit"288"

    您尝试访问"288"->name"288"->colour"288"->calories,但"288"不是数组。

  4. 另请注意,有时您会使用“c a lories”,有时会使用“c o lories”,有时会使用“颜色”,但有时会使用“colo u < / b> R”。

答案 1 :(得分:1)

您正在创建一个名为fruit的变量,它是一个数组,但是稍后当您访问水果的值时,您就像对象一样使用它。

抛弃foreach循环并访问数组,如:

$fruit['name'],
$fruit['colour'],
$fruit['calories'],