php - 将 curdate 插入数据库时​​出现问题

标签 php mysql database

尝试将当前日期插入 MySQL 数据库时,我不断收到错误消息。我得到了具有不同列的表格图片。其中之一,picture_upload,应该有上传图片的日期。

我不断收到错误

PDOException: SQLSTATE[21S01]: Insert value list does not match column list: 
1136 Column count doesn't match value count at row 1 in 
/Applications/MAMP/htdocs/pinterest/profile.php:57 Stack trace: #0 
/Applications/MAMP/htdocs/pinterest/profile.php(57): PDOStatement->execute() #1 {main}Success

See my pictures table

{
    $sName = $_POST['name'];
    $img = $_FILES['image']['name'];
    $sUserId = $_SESSION['txtUsername'];

    try{
        $stmt = $db->prepare("INSERT INTO pictures VALUES (null, :sName, :sImage, 'curdate()', :sUserId, 0, 0)");
        $stmt->bindValue(':sName', $sName);
        $stmt->bindValue(':sImage', $img);
        $stmt->bindValue(':sUserId', $aRow->user_id);

        $stmt->execute();

    }catch (PDOEXception $ex){
        echo $ex;
    }
    move_uploaded_file($_FILES['image']['tmp_name'], "images/$img");
    echo 'Success';
}

感谢您的帮助!

最佳答案

您应该始终明确列出插入的目标列:

try {
    $sql = "INSERT INTO pictures (picture_name, picture_path, upload_date, use_rid, pic_like, pic_dislike) ";
    $sql .= "VALUES (:sName, :sImage, CURDATE(), :sUserId, 0, 0)";
    $stmt = $db->prepare($sql);
    $stmt->bindValue(':sName', $sName);
    $stmt->bindValue(':sImage', $img);
    $stmt->bindValue(':sUserId', $aRow->user_id);

    $stmt->execute();
} catch (PDOEXception $ex) {
    echo $ex;
}

注释:

  • 由于picture_id是一个自动递增列,如果您希望MySQL自动分配序列值,则应该在插入时省略此列。然后,MySQL 将处理选择值。
  • CURDATE() 不使用单引号,因为它是函数调用。

关于php - 将 curdate 插入数据库时​​出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56405506/

相关文章:

php - 选择选项时表单操作会更改

javascript - 添加更多按钮在 WordPress 仪表板中不起作用

mysql - 计算具有不同列的行数

mysql - 如何使用 mysql 查询从 Magento 数据库获取产品详细信息?

database - 获取 ORA-02391 : SESSIONS_PER_USER limit

php - $_REQUEST 优先级是什么?

php - 在 Woocommerce 3+ 中使用订单项以编程方式创建订单

即使返回的连接结果为空,mysqli_num_rows也会返回1

c# - SQL 检测空值并更改查询

java - Spring -MongoDB