2016-08-03 35 views
-1

Ich möchte in db durch externe Datei log.php einfügen. ID, Datum in mysql DATETIME und zwei Strings gesetzt. Mein Funktionsaufruf ist zapis_log($surename);. Ich bekomme Fehler um prepare und während executing.PHP PDO, INSERT IN mysql in Funktion

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

Danke Jungs.

+1

, was der Fehler ist? –

+0

Warum benutzen Sie 'prepare'? – PeeHaa

Antwort

1
  1. Datum ist ein Stichwort. Verwenden Sie den Backtick, um die Spalte date einzuschließen.
  2. Nicht mit bind_param?

CODE AKTUALISIERT

<?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

Nana, 'date' ist ein Schlüsselwort, kein reserviertes Wort https://dev.mysql.com/doc/refman/5.7/en/keywords.html - Es gibt kein' (R) 'daneben. "AKTION" ist auch ein Schlüsselwort. Daher kann das Problem durch Rücklesen nicht behoben werden. etwas anderes verursacht ihren Code zum Scheitern und sie müssen nach dem (echten) Fehler suchen. Persönlich denke ich, dass es sich um ein Problem mit einem variablen Bereich handelt. schau, sie benutzen eine benutzerdefinierte Funktion ;-) Außerdem wissen wir auch nicht, mit welcher MySQL-API sie sich verbunden haben. Wir wissen auch nicht, wie sie diese 'zapis_log()' Funktion nennen. Und keine Ahnung, woher diese Variablen kommen und ob sie Werte haben. –