MDB2编写语句并插入NOW()

时间:2013-01-06 22:10:00

标签: mysql function prepared-statement mdb2

我正在使用MDB2的预处理语句,并且与documentation有点混淆,特别是处理MySQL内置函数,如NOW()或CURDATE()。

  

$ data中传递的值必须是文字。不要提交SQL   函数(例如CURDATE())。应该是的SQL函数   在执行时执行需要放在准备好的声明中。   类似地,标识符(即表名和列名)不能   之所以使用,是因为在准备阶段会对名称进行验证。

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

ID 姓 名字 性别 dateadded

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

这样的东西
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函数?或者我是否需要计划为表中的每个字段插入值?

1 个答案:

答案 0 :(得分:1)

我不明白你的问题 为什么不直接将NOW()添加到预准备语句中呢?

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