2012-02-12 45 views
0

foreach不會迴應任何東西,有人知道它有什麼問題嗎?這個php pdo代碼有什麼問題?

注意:$ check是複選框的值。

<?php 
    $hostname = 'localhost'; 
    $username = 'root'; 
    $password = ''; 
    $database = 'foo'; 

    try{ 

     $db = new PDO("mysql:host=$hostname;dbname=$database",$username,$password); 

     $checks = $_POST['checks']; 

     $post = "SELECT * FROM articles WHERE title= ' ". $checks ." '"; 

     foreach($db->query($post) as $row){ 
      echo $row['title'] . '' . $row['body']; 
     } 

    }catch(PDOException $e){ 
     echo 'CONNECTION UNSUCCESFUL!'; 
    } 

?> 
+0

你的代碼很容易sql注入,請參閱http://php.net/manual/en/security.database.sql-injection.php – VolkerK 2012-02-12 09:01:58

回答

2

標題周圍的多餘空格?所以帶有額外空格的標題永遠不會從數據庫中獲得匹配。

WHERE title= ' ". $checks ." '"; 

更改爲

WHERE title= '". $checks ."'"; 

,然後再試一次。

+0

謝謝,夥計。即使我沒有向你展示任何數據庫的東西,你知道錯誤是什麼,巧妙! – siaooo 2012-02-12 08:00:44

1
$post = "SELECT * FROM articles WHERE title IN (' ". implode("','", $checks) ." ') "; 

如果$檢查是數組,那麼你應該使用這樣

+0

我可以回顯$檢查就好了 – siaooo 2012-02-12 07:58:27

+0

+1。感謝您的回答。我相信你的答案將來對我有用,下次在處理數組時我會記住implode(),謝謝! XD – siaooo 2012-02-12 08:02:57