【问题标题】:MDB2 prepared statements and inserting NOW()MDB2 准备好的语句并插入 NOW()
【发布时间】:2013-01-06 22:10:00
【问题描述】:

我正在使用 MDB2 的预处理语句,对 documentation 有点困惑,特别是处理 MySQL 内置函数,如 NOW() 或 CURDATE()。

$data 中传递的值必须是文字。不提交 SQL 函数(例如 CURDATE())。应该是的 SQL 函数 在执行时执行需要放在准备好的语句中。 同样,标识符(即表名和列名)不能 因为名称在准备阶段得到验证。

所以文档说要在准备好的语句中包含这些函数,但我不确定如何解释字段名。例如,如果我有一个包含五列的表:

身份证 姓 名 性别 添加日期

我想插入一行,只添加第一个、最后一个和添加日期...我可能会使用类似

INSERT INTO mytable (firstname,lastname,dateadded) VALUES('jane','doe',NOW())

如果不是添加日期的列,我会使用类似:

    $types = array(
        'text', 
        'text' 
    );
    $sth = $mdb2->prepare('
        INSERT INTO 
            mytable 
        VALUES 
            (
                :firstname,
                :lastname
            )', $types);

    $data = array(
        'firstname'     => 'Jane', 
        'lastname'  => 'Doe'
    );
    $affectedRows = $sth->execute($data);

那么——就列出字段名而言,我如何解释 MySQL 函数?或者我是否需要计划为表中的每个字段插入值?

【问题讨论】:

标签: mysql function prepared-statement mdb2


【解决方案1】:

我不明白你的问题。
为什么不像它所说的那样直接将 NOW() 添加到准备好的语句中?

$sql = 'INSERT INTO mytable ( lastname, firstname, dateadded) 
        VALUES (:firstname, :lastname, NOW())';
$sth = $mdb2->prepare($sql, $types);

【讨论】:

  • 我不确定我是否在准备好的语句中指定了字段名——这是我第一次使用它们。感谢您回答我的新手问题。
猜你喜欢
  • 2015-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-16
  • 1970-01-01
  • 1970-01-01
  • 2016-03-05
  • 1970-01-01
相关资源
最近更新 更多