我试图学习MySqli预备语句,但我陷入了动态绑定。
这是我的代码。这工作正常,但我得到的所有结果,而不是 user_id = 1 。不知道我在这里失踪了什么。请帮帮我..
public function prepareSelectSql($from,$feilds="*",$where = '',$bind=false,$params)
{
if($this->conn)
{
$query = "SELECT ".$feilds." FROM `".$from."`";
$stmt = $this->conn->prepare($query);
if($stmt === false)
{
trigger_error('Wrong SQL: ' . $sql . ' Error: ' . $this->conn->errno . ' ' . $this->conn->error, E_USER_ERROR);
}
if($bind)
{
echo "<br/><br/>";
echo $query .= $where;
$id='1';//call_user_func_array(array($stmt, 'bind_param'), $params);
$stmt->bind_param("i",$id);
echo "<br/><br/>Here";
}
$stmt->execute();
$result = $stmt->get_result();
while ($myrow = $result->fetch_assoc())
{
print_r($myrow);
}
}
else { echo "Not Aavailable";}
}
我正在调用此函数,如下所示。
$where = 'WHERE `ID`=?';
$params = array('i','1');
$feilds = '`user_nicename`';
$this->db->prepareSelectSql('wp_users',$feilds,$where,true,$params);
答案 0 :(得分:2)
在$bind
条件下,您将SQL
连成,但是在条件之前准备它。我建议你在完成完整的查询字符串后准备查询。
$query = "SELECT ".$feilds." FROM `".$from."` ";
if($stmt === false){
trigger_error('Wrong SQL: ' . $sql . ' Error: ' . $this->conn->errno . ' ' . $this->conn->error, E_USER_ERROR);
}
if($bind){
$query .= $where;
$stmt = $this->conn->prepare($query);
$id = '1';
$stmt->bind_param("i",$id);
}else{
$stmt = $this->conn->prepare($query);
}