为什么这个PDO准备好的声明不起作用?

时间:2012-05-17 00:12:42

标签: php mysql pdo

对于我的生活,我似乎无法使用这个简单的插入查询:

try {

// Connect to database
$dbh = new PDO("mysql:host=$host;dbname=$db", $user, $pass);

// Create an array of all data to be inserted
$data = array(':id'      => 'null',
              ':name'       => $name,
              ':location'   => $loc,
              ':latitude'   => $lat,
              ':longitude'  => $lon,
              ':website'    => $web,
              ':bandcamp'   => $bandcamp,
              ':facebook'   => $facebook,
              ':bio'        => $bio,
              ':image'      => $image,
              ':updated'    => 'null');

// Create sql statement
$sql = 'INSERT INTO artists VALUES (:id, :name, :location, :latitude, :longitude, :website, :bandcamp, :facebook, :bio, :image, :updated)';

// Run query
$query = $dbh->prepare($sql);
$query->execute($data);

// Disconnect from database
$dbh = null;

}

catch(PDOException $e) {
echo $e->getMessage();
}

数据未插入表中,我没有收到任何错误消息。我在这里错过了什么吗?

2 个答案:

答案 0 :(得分:3)

当您执行这些PDO方法时,您应该检查它们是否没有返回false,如果是,则处理,以了解代码是否失败以及失败的位置。

此外,您似乎将字符串值'null'插入idupdated字段。这可能会导致问题(请参阅manual page)。并确保您插入的任何字段都可以null

答案 1 :(得分:0)

':id'      => 'null',
如果您的表具有主键和自动增量

,则

可能不起作用