2012-04-12 12 views
6

Ich versuche, einen Datensatz in MySQL mit PDO einzufügen, meine SQL-Anweisung kann im folgenden Code gesehen werden.SQLSTATE [42S22]: Spalte nicht gefunden: 1054 Unbekannte Spalte

<?php 
    try{ 
     //include file myfunctions.php allows us to calls functions from it 
     include ("myfunctions.php"); 
     //Assign function getConnection() from myfunctions.php to variable $db 
     $db = getConnection(); 


     foreach($_POST['chk'] as $check_value) 
     { 
      $check = $check_value; 
      $fav = "channel/item [title = \"$check\"]"; 
      $holidayDoc = simplexml_load_file('holidays.xml'); 
      $favourites = $holidayDoc->xpath($fav); 

     foreach($favourites as $currentFav) 
     { 
      echo "{$currentFav->link}". "<br \>"; 
      echo "{$currentFav->title}". "<br \>"; 
      echo "{$currentFav->description}". "<br \>"; 
      echo "{$currentFav->pubDate} ". "<br \>"; 

      $sql = "INSERT INTO `saved_holidays` (`subscriberID`, `link`, `pubDate`, `title`, `description`) 
      VALUES (`John`, `$currentFav->link`, `$currentFav->pubDate`, `$currentFav->title`, `$currentFav->description`)"; 

      $db->exec($sql); 
      $db = null; 
     } 
    } 
} 
     catch(PDOException $e) 
     { 
      echo $e->getMessage(); 
     } 
?> 

Wenn dieser Code ausgeführt wird, werde ich mit der folgenden Fehlermeldung konfrontiert;

SQLSTATE [42S22]: Column nicht gefunden: 1054 Unknown column 'John' in 'Feldliste'

Dies ist ohne Zweifel eine einfache Lösung für dieses Problem, aber ich kann es nicht zu sehen scheinen Kann mir jemand in die richtige Richtung zeigen?

Antwort

12

Ich glaube, das liegt daran, dass Sie für Ihre Backticks Werte verwenden. Ändern Sie sie auf einfache Anführungszeichen und Sie sollten

$sql = "INSERT INTO `saved_holidays` (`subscriberID`, `link`, `pubDate`, `title`, `description`) 
      VALUES ('John', '$currentFav->link', '$currentFav->pubDate', '$currentFav->title', '$currentFav->description')"; 

Bitte beachten to this SO question about single quotes versus backticks gut sein, wenn Sie mehr Informationen wünschen

+0

Akzeptiert, wenn laut, danke für den interessanten Link. –

2
$sql = "INSERT INTO `saved_holidays` (`subscriberID`, `link`, `pubDate`, `title`, `description`) 
      VALUES ('John', '$currentFav->link', '$currentFav->pubDate', '$currentFav->title', '$currentFav->description')"; 

Verwenden `für Felder nur und Verwendung" für Werte

2

`ist für Felder spezifizieren, können Sie einen Apostroph ' für Werte verwenden.

$sql = "INSERT INTO `saved_holidays` (`subscriberID`, `link`, `pubDate`, `title`, `description`) 
     VALUES ('John', '$currentFav->link', '$currentFav->pubDate', '$currentFav->title', '$currentFav->description')"; 
Verwandte Themen