2016-07-04 6 views
0

Hier ist meine Frage:Wie kann ich sicherstellen, dass meine Abfrage eine neue Zeile einfügt?

$db->query("INSERT INTO mytable(col1, col2) VALUES('val1', 'val2')"); 

Ich versuche, diese Abfrage zu verstehen, um eine neue Zeile einfügt oder nicht? Wie kann ich es feststellen?


Hinweis: Ich verwende nicht execute() in diesem Fall.

+0

mit welcher MySQL API verbinden Sie sich? –

+0

@ Fred-ii-PDO ..! –

+1

http://stackoverflow.com/questions/1661863/pdo-mysql-how-to-know-if-insert-was-successful und http://stackoverflow.com/questions/13833499/syntax-for-if-else -statement-if-insert-war-erfolgreich-in-a-pdo-prepared-statesmen –

Antwort

1

direkt Entnommen w3schools.com/php/php_mysql_insert ...

$sql = "INSERT INTO MyGuests (firstname, lastname, email) 
VALUES ('John', 'Doe', '[email protected]')"; 

if ($conn->query($sql) === TRUE) { 
    echo "New record created successfully"; 
} else { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
} 

Sie suchen diese: if (conn- $> query ($ sql) === TRUE)

bearbeiten : Sorry, falsches Beispiel genommen als @Drew aufgezeigt!

Below korrekter Schnipsel ist, macht es die Verwendung von ausführen machen, wie ich denke, es sollte

Dieser Link könnte von mehr Nutzen sein (korrigiert mich wenn ich falsch liege!): pdostatement.execute

try { 
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 
    // set the PDO error mode to exception 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $sql = "INSERT INTO MyGuests (firstname, lastname, email) 
    VALUES ('John', 'Doe', '[email protected]')"; 
    // use exec() because no results are returned 
    $conn->exec($sql); 
    echo "New record created successfully"; 
    } 
catch(PDOException $e) 
    { 
     echo $sql . "<br>" . $e->getMessage(); 
    } 

und

<?php 
function customExecute(PDOStatement &$sth, array $params = array()) { 
    if (empty($params)) 
     return $sth->execute(); 
    return $sth->execute($params); 
} 
?> 

Hoffe, das hilft!

+2

Sie meinen aus einer nicht verwandten dblibrary Referenz entnommen? – Drew

+0

Juan, unten ist PDO. Selbst noch, würde es eine "PDOStatement" zurückgeben, nicht? Bin ich falsch, könnte ich sein. Bitte optimieren Sie Ihre Antwort, damit ich meinen DV in eine Upvote mein Freund verwandeln kann. – Drew

0

PDO query Funktion gibt eine PDOStatement

Sie für die error code im PDOStatement überprüfen können. Es sollte 0 sein, wenn alles erfolgreich ausgeführt wurde. Eine weitere Option ist die Überprüfung auf rowCount Funktion Ergebnis - wenn neue Zeile eingefügt wurde, soll es 1.

+0

Ich verstehe. danke .. upvote –

0

Sie normalerweise execute() Anruf auf ein PDOStatement Objekt durchführen wird, kehrte über prepare() Anruf.

Hier wäre der Rückgabewert Ihrer query() Anruf auch PDOStatement Objekt, auf dem Sie Ihre rowCount() anwenden können.

PDO::query() gibt ein PDOStatement Objekt oder FALSE ein Fehler auftrat.

+0

Danke .. upvote. Können Sie mir bitte sagen, wie ein 'PDOStatement' aussieht? –

+0

Es sieht aus wie etwas, das ausgeführt werden kann, oder bindet Parameter in (ja). – Drew

+0

@Drew Ist das wie eine Abfrage? Wie 'EINFÜGEN IN ...'? –

Verwandte Themen