2016-08-03 80 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()'函數的。並不知道這些變量來自哪裏以及它們是否具有價值。 –