2017-02-21 5 views
0

Hallo Ich habe diesen Code, der nicht funktioniert. Ich habe seit etwa einer Stunde damit herumgespielt und kann keine Fehler finden, ich weiß nicht, was es ist. Vielleicht könnte mir hier jemand helfen.PDO-Anweisung nicht in die Datenbank einfügen

Einfügen von Skript:

<?php error_reporting(E_ALL); ini_set('display_errors',1); 
require('connect.php'); 

$sql = "INSERT INTO products (name, description, price, url, category, artwork) VALUES ('john', 'john', 'john', 'john', 'john', 'john')"; 
if ($link->query($sql)) { 
    echo "<script> 
    alert('Data was added.'); 
    window.location.href='dashboard.php'; 
    </script>"; 
} 
else { 
    echo "<script> 
    alert('Data was not added.'); 
    window.location.href='dashboard.php'; 
    </script>"; 
} 
?> 

Ich versuche, Daten in der Datenbank hinzuzufügen, aber es wird nicht nur die Daten hinzufügen, die ich ihm gegeben habe.

Hier ist mein connect Skript:

<?php 

try { 
    $dbhost = 'localhost'; 
    $dbuser = 'root'; 
    $dbpass = ''; 
    $link = new PDO("mysql:host=$dbhost;dbname=dbtesttest;",$dbuser,$dbpass); 

} catch (PDOException $e) { 
    echo "Failed :" . $e->getMessage() . "\n"; 
} 

?> 

jemand eine Ahnung, was ich falsch mache? Neben der Verwendung von Warnungen in PHP. Es gibt mir keine Fehler, ich habe eine Datenbank mit den tatsächlichen Attributen erstellt. Ich brauche Hilfe :(

+1

Haben Sie überprüft, dass die Abfrage funktioniert? Die erste Sache, die in den Sinn kommt, ist eine Zeichenfolge in ein numerisches Feld (Preis -> 'John') setzen – nvisser

+0

Verwenden Sie vorbereitete Anweisungen und führen Sie Ihre Abfrage nach der Vorbereitung. Mehr hier http://php.net/manual/en/pdo.prepared-statements.php – Grynets

+0

Was bedeutet "wird nicht funktionieren"? Sie haben eine if/then/else-Anweisung - welche der Code-Verzweigungen wird ausgeführt? – miken32

Antwort

-1

Ich glaube, Sie Link- $ verwenden sollten> exec ($ sql);..

+0

Warum denkst du das? Stellen Sie etwas mehr als einen vorübergehenden Kommentar mit nichts zur Verfügung, um es zu unterstützen. – miken32

-1

Lasst uns versuchen, das Problem zu vereinfachen Es sieht nicht so aus, wie Sie die Datenbankverbindung zurückkehren Damit Sie verstehen kann besser ist, können wir die Db aus dem gleichen Skript aufrufen (wir können sie verschieben, nachdem Sie es zu arbeiten, weil wir alle lieben, Refactoring oder nicht?)

try { 
    $dbhost = 'localhost'; 
    $dbuser = 'root'; 
    $dbpass = ''; 
    $link = new PDO("mysql:host=$dbhost;dbname=dbtesttest;",$dbuser,$dbpass); 

// set Attribut Verbindung in der Versuch Block

$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 


} catch (PDOException $e) { 
    echo "Failed :" . $e->getMessage() . "\n"; 
} 

dann diese Zeile ändern

$link->query($sql) 

zu

$stmt = $link->prepare($sql); 
$stmt->execute(); 

Alles sollte jetzt in Ihrem try-Block oben gehen, und der Einsatz sollte funktionieren, oder es wird eine detailliertere Fehler zurück. Hoffentlich bringt dich das weiter und hilft dir, deinen Kopf darum zu wickeln. Diese link hat eine gute Grundierung auf PHP/MySQL CRUD-Operationen.

+0

Was ist falsch beim direkten Aufruf von $ link-> query? Warum glaubst du, dass die Vorbereitung einer Aussage helfen würde? – miken32

+0

Ich denke nicht, dass es falsch ist, aber für das OP sollte es ihm helfen zu erkennen, was vor sich geht und die Operationen hoffentlich besser verstehen. Ich glaube, es liest sich auch besser beim Schreiben von Einfüge-/Aktualisierungs-/Löschanweisungen im Gegensatz zu Auswahlen, da Abfragen häufig zugeordnet werden. Dieser [link] (http://stackoverflow.com/questions/16381365/difference-between-pdo-query-and-pdo-exec) erklärt den Unterschied im Detail. –

+1

Antworten sollten die Frage beantworten, nicht die Fehlersuche oder Dinge "besser lesen". Sobald Sie ein bisschen mehr Repräsentanten haben, können Sie Fragen kommentieren, um nach Erklärungen zu suchen oder Debug-Vorschläge zu machen. – miken32

Verwandte Themen