2017-10-10 100 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);