【问题标题】:PHP PDO, INSERT INTO mysql in function [duplicate]PHP PDO,在函数中插入到mysql [重复]
【发布时间】:2016-08-03 09:46:14
【问题描述】:

我想通过外部文件 log.php 插入数据库。 id ,在 mysql DATETIME 中设置的日期和两个字符串。我的函数调用是zapis_log($surename);。 我在prepareexecuting 收到错误

log.php

<?php
require 'connect_test.php';
function zapis_log($who) {
$action = "edit";
    $log = $conn->prepare("INSERT INTO log (id,date,action,who) VALUES(NULL,NOW(),'$action','$who')");
    $insert = $log->execute(); 
}
?>

谢谢你们。

【问题讨论】:

  • 错误是什么?
  • 你为什么使用prepare

标签: php mysql function pdo insert


【解决方案1】:
  1. 日期是一个关键字。使用反引号将 date 列括起来。
  2. 不使用bind_param

更新代码

<?php
require 'connect_test.php';
function zapis_log($who) {
  $action = "edit";
  $current_date = date("Y-m-d h:i:s");

  $log = $conn->prepare("INSERT INTO log (`date`,action,who) VALUES(?,?,?)");
  $log->bind_param("sss", $current_date, $action, $who);
  $insert = $log->execute(); 
}
?>

【讨论】:

  • 娜娜,date 是关键字,不是保留字 dev.mysql.com/doc/refman/5.7/en/keywords.html - 旁边没有(R)ACTION 也是一个关键字。因此,反引号不会解决问题;其他原因导致他们的代码失败,他们需要检查(真正的)错误。就个人而言,我认为这是一个可变范围问题;看,他们正在使用自定义函数;-) 另外,我们也不知道他们用来连接哪个 MySQL API。我们也不知道他们是如何调用 zapis_log() 函数的。而且不知道这些变量来自哪里以及它们是否具有值。
猜你喜欢
  • 1970-01-01
  • 2013-09-03
  • 2019-07-06
  • 2015-09-25
  • 2018-02-18
  • 2015-07-22
  • 1970-01-01
  • 2014-11-24
  • 2017-02-10
相关资源
最近更新 更多