通过PDO将数据插入MySQL,尝试使用数组包含时间戳和数据 - 获取错误?

时间:2012-08-20 21:43:09

标签: php mysql database pdo

我有一组数据存储在变量中,我想要一个页面将该数据写入MySQL数据库,我想包括插入时间,这是我的方法:

$username="username"; $password="password";


try {
  $pdo = new PDO('mysql:host=localhost; dbname=db01', $username, $password);
  $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  $stmt = $pdo->prepare('INSERT INTO table01
  (
   Time,
   variable1,
   variable2,
  )

VALUES
  (
    :Time,
    :variable1,
    :variable2,
  )');


  $stmt->execute(array(
        ':Time' => NOW(),
        ':variable1' => $var1,
        ':variable2' => $var2,
  ));

  echo $stmt->rowCount(); // 1
} catch(PDOException $e) {
  echo 'Error: ' . $e->getMessage();
}

在加载这个页面时,css被从页面上剥离,我得到一个页面应该是什么样的乱码输出(白色屏幕,纯文本一些图像),另外在检查数据库时没有写入任何内容它

在那里没有Time变量,一切都很完美。

有什么建议吗?提前致谢

1 个答案:

答案 0 :(得分:4)

抱歉,带我片刻重新阅读。您正在使用nysql函数now()来完成工作,因此您不需要将其设置为param,因此根本不需要绑定它。只需将其写入您的查询即可。

  $stmt = $pdo->prepare('INSERT INTO table01
  (
   Time,
   variable1,
   variable2,
  )

VALUES
  (
    now(),
    :variable1,
    :variable2,
  )');

  $stmt->execute(array(
    ':variable1' => $var1,
    ':variable2' => $var2,
  ));

编辑重新评论

查询中的:将其表示为准备好的查询中的参数。这意味着你必须然后通过bind()命令绑定它。但是,如果要从数据库中插入数据(例如使用内置函数,或从另一行中提取数据),则无需在初始查询中使用{ {1}}因此您无法将其传递给绑定的params数组中的查询。