2012-04-12 13 views
6

Próbuję wstawić rekord do MySQL przy użyciu PDO, moja instrukcja sql jest widoczna w poniższym kodzie.SQLSTATE [42S22]: Nie znaleziono kolumny: 1054 Nieznana kolumna

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

Po wykonaniu tego kodu pojawia się następujący komunikat o błędzie;

SQLSTATE [42S22]: Column not found: 1054 Unknown column 'John' w 'lista pole'

Jest to bez wątpienia proste rozwiązanie tego problemu, ale ja nie potrafię go zobaczyć Czy ktoś może wskazać mi właściwy kierunek?

Odpowiedz

12

wierzę, to dlatego, że używasz odwrócone, pojedyncze apostrofy dla swoich wartości. Zmienić ich apostrofami i powinno być dobrze

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

Zapoznaj to this SO question about single quotes versus backticks jeśli chcesz uzyskać więcej informacji

+0

Przyjmę na głos, dzięki za interesujący link. –

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

Wykorzystanie `tylko dla pól i używania" dla wartości

2

`jest do określenia pola, należy użyć pojedynczego cudzysłowu ' dla wartości.

Powiązane problemy