mysql - MDB2 准备好的语句并插入 NOW()

标签 mysql function prepared-statement mdb2

我正在使用 MDB2 的准备好的语句,但对 documentation 有点困惑,专门处理 MySQL 内置函数,如 NOW() 或 CURDATE()。

The values passed in $data must be literals. Do not submit SQL functions (for example CURDATE()). SQL functions that should be performed at execution time need to be put in the prepared statement. Similarly, identifiers (i.e. table names and column names) can not be used because the names get validated during the prepare phase.

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

ID 姓 名 性别 添加日期

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

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

最佳答案

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

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

关于mysql - MDB2 准备好的语句并插入 NOW(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14187333/

相关文章:

mysql - 在ubuntu上安装phpmyadmin后,我忘记了phpmyadmin的用户名和密码。我怎样才能再次恢复这些?

C++ : Array of struct as function parameter

php - mysqli_fetch_assoc()需要参数/调用成员函数bind_param()错误。如何获取并修复实际的mysql错误?

java - 参数索引超出范围(2 > 参数个数,即 1)

mysql - 带有嵌入表的动态 SQL

php - MySQL用while循环插入多条记录

php - 从 db mysql 获取单个值时出现问题

javascript - 将字符串替换为其他带有字符串的变量

c++ - 将函数从一个类发送到另一个类并在 C++ 中执行

java - 只有最后更新查询在 JAVA 的 addBatch 中工作