2012-04-12 16 views
6

Sto tentando di inserire un record su MySQL utilizzando PDO, la mia istruzione sql può essere vista nel seguente codice.SQLSTATE [42S22]: colonna non trovata: 1054 colonna sconosciuta

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

Quando viene eseguito questo codice, viene visualizzato il seguente messaggio di errore;

SQLSTATE [42S22]: Colonna non trovato: 1.054 Unknown colonna 'John' in 'dei campi'

Questo è senza dubbio una semplice soluzione a questo problema, ma io non riesco a vederlo , qualcuno può indicarmi la giusta direzione?

risposta

12

Credo che questo sia perché si sta utilizzando backticks per i vostri valori. cambiarli a apici e si dovrebbe essere buono

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

prega di fare riferimento to this SO question about single quotes versus backticks se volete maggiori informazioni

+0

Accetterà quando ad alta voce, grazie per il collegamento interessante. –

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

Usa `solo per i campi e l'uso 'per i valori

2

`è per specificare i campi, è necessario utilizzare una sola offerta ' per i valori.

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