2016-07-27 7 views
-1

Wenn ich versuche, dies zu tun:MySql Syntaxfehler während serialisierten Array einfügen versuchen

$query = "INSERT INTO news ("; 
      $query .= "page_link,title,content,images,date"; 
      $query .= ") VALUES ("; 
      $query .= "'{$page_link}','{$title}','{$content}',''" . serialize($images_array) . "'','{$date}'"; 
      $query .= ")"; 

Ich gebe diesen Fehler:

Sie haben einen Fehler in Ihrer SQL-Syntax; das Handbuch, dass zu Ihrer MySQL-Server-Version für die richtige Syntax in der Nähe von zu verwenden entspricht ‚a: 33: {i: 0; s: 76: \“ http://www.example.com/wp-content/uploads/2016/07/Abc.jpg ' in Zeile 1

I' m sicher, dass es für serialize($images_array) ist, weil, wenn ich es andere Werte zu entfernen wird in die Datenbank eingefügt werden.
meine Array Links Bilder enthält.

+1

lernen über vorbereitete Anweisungen – Jens

+0

Oder zumindest Ihre Daten – Kickstart

+1

Auch entkommen lernen, Ihr eigenes einfaches Debugging zu tun. Das sind die Augen für – RiggsFolly

Antwort

1

prüfen Sie haben extra Apostrophe '

$query .= "'{$page_link}','{$title}','{$content}','" . serialize($images_array) . "','{$date}'"; 
0

Ihre Frage an diese Änderung eine zusätzliche ‚ist‘ in der Abfrage es so machen,

‚“. serialisieren ($ images_array). „‘

$query = "INSERT INTO news ("; 
      $query .= "page_link,title,content,images,date"; 
      $query .= ") VALUES ("; 
      $query .= "'{$page_link}','{$title}','{$content}','" . serialize($images_array) . "','{$date}'"; 
      $query .= ")"; 
1

Statt direkte Substitution Werte verwenden, können Sie unter Methoden verwenden, um SQL-Injection zu vermeiden

hoffen, dass dies Ihr Problem lösen

Sie haben grundsätzlich zwei Möglichkeiten, dies zu erreichen.:

PDO (für jeden unterstützten Datenbank-Treiber):

$stmt = $pdo->prepare('SELECT * FROM employees WHERE name = :name'); 

$stmt->execute(array('name' => $name)); 

foreach ($stmt as $row) { 
    // do something with $row 
} 

MySQLi (für MySQL):

$stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name = ?'); 
$stmt->bind_param('s', $name); 

$stmt->execute(); 

$result = $stmt->get_result(); 
while ($row = $result->fetch_assoc()) { 
    // do something with $row 
} 

entnehmen Sie bitte How can I prevent SQL-injection in PHP?

Verwandte Themen