0

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

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

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

id 姓 名 性别 date added

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

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

如果不是 date added 列,我会使用类似的东西:

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

4

1 回答 1

1

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

$sql = 'INSERT INTO mytable ( lastname, firstname, dateadded) 
        VALUES (:firstname, :lastname, NOW())';
$sth = $mdb2->prepare($sql, $types);
于 2013-01-06T23:46:32.777 回答