2017-10-10 96 views
-3

我想mysqlpdo如何查詢與MySQL PDO執行

query執行查詢

SELECT * FROM `user_skills` WHERE skills in ('html','css') 

見下文

enter image description here

執行的屏幕我以這種格式獲取數據

$skills = array('html','css'); 

      $sql = "SELECT first_name,last_name,mobile_number,prev_comany_name,user_id FROM user_details WHERE skills=:input";        
      $stmt = $db->prepare($sql); 
      $stmt->bindValue("input", $skills);    
      $stmt->execute(); 

    /** foreach($skills as $skill){ 
     echo $skill; 
    } **/ 
+0

你有什麼錯誤 得到...? – GYaN

+0

你不能直接輸入一個數組來做準備。只需採取您的原始查詢,用您的標誌替換用戶輸入然後綁定它們。 – IsThisJavascript

+0

你想要技巧來匹配'html'和'css'嗎? –

回答

1

你不能傳遞一個數組○bindValue()功能,你不能考到與查詢多個值,而不是平等的,你需要使用in操作。然後你就可以爆的陣列將字符串傳遞到bindValue()功能:

$skills = array('html','css'); 

      $sql = "SELECT first_name,last_name,mobile_number,prev_comany_name,user_id FROM user_details WHERE skills IN (:input)";        
      $stmt = $db->prepare($sql); 
      $stmt->bindValue(":input", implode(",", $skills), PDO::PARAM_STR);    
      $stmt->execute(); 

    /** foreach($skills as $skill){ 
     echo $skill; 
    } 
+0

把'implode(「,」$ skills)'改成'implode(「,」,$ skills)'' –

+0

謝謝@NanaPartykar –

+0

@SamerAbuGahgah,現在我得到這個'錯誤''致命錯誤:調用成員函數prepare()在null' – EaB

0

變化代碼:

$skills = array('html','css'); 

    $sql = "SELECT first_name,last_name,mobile_number,prev_comany_name,user_id FROM user_details WHERE skills IN (:input)";        
    $stmt = $db->prepare($sql); 
    $stmt->bindValue(":input", "'".implode("','", $skills)."'");    
    $stmt->execute(); 
0

我得到了解決辦法參照本threadCan I bind an array to an IN() condition?

FIND_IN_SET

$skills = array('html','css'); 
SELECT * FROM table WHERE FIND_IN_SET(id, :array) 
$skills = implode(',', $skills); 
$stmt->bindParam('array', $skills);