2016-08-03 82 views
-1

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

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(); 
} 
?> 

谢谢你们。

+1

有什么错误? –

+0

你为什么使用'准备'? – PeeHaa

回答

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(); 
} 
?> 
+0

娜娜,'日期'是一个关键字,不是保留字https://dev.mysql.com/doc/refman/5.7/en/keywords.html - 旁边没有'(R)'。 'ACTION'也是一个关键字。因此反驳它并不能解决问题;别的东西导致他们的代码失败,他们需要检查(真实的)错误。我个人认为这是一个可变范围问题;看,他们正在使用自定义函数;-)另外,我们也不知道他们用于连接哪个MySQL API。我们也不知道他们是如何调用'zapis_log()'函数的。并不知道这些变量来自哪里以及它们是否具有价值。 –