2012-04-12 32 views
6

Tôi đang cố chèn bản ghi vào MySQL bằng PDO, câu lệnh sql của tôi có thể được nhìn thấy trong đoạn mã sau.SQLSTATE [42S22]: Cột không tìm thấy: 1054 Cột không xác định

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

Khi mã này được thực thi, tôi đã gặp thông báo lỗi sau;

SQLSTATE [42S22]: Cột không tìm thấy: 1054 Unknown column 'John' trong 'danh sách trường'

Đây là không có nghi ngờ một giải pháp đơn giản cho vấn đề này, nhưng tôi dường như không thể nhìn thấy nó , ai đó có thể chỉ cho tôi phương hướng đúng không?

Trả lời

12

Tôi tin rằng điều này là do bạn đang sử dụng backticks cho các giá trị của bạn. Thay đổi chúng để dấu nháy đơn và bạn nên tốt

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

Vui lòng tham khảo to this SO question about single quotes versus backticks nếu bạn muốn biết thêm thông tin

+0

Sẽ chấp nhận khi lớn tiếng, cảm ơn liên kết thú vị. –

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

Sử dụng 'chỉ lĩnh vực và sử dụng' cho các giá trị

2

`là để xác định các lĩnh vực, bạn phải sử dụng một dấu nháy đơn ' cho các giá trị.

$sql = "INSERT INTO `saved_holidays` (`subscriberID`, `link`, `pubDate`, `title`, `description`) 
     VALUES ('John', '$currentFav->link', '$currentFav->pubDate', '$currentFav->title', '$currentFav->description')"; 
Các vấn đề liên quan