本文介绍了$ stmt-> bind_param()(如果条件查询)动态的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
当我使用SELECT
这是我的php代码
$sql = 'SELECT ProductName, ProductId FROM Product WHERE 1=1'
if($produkname != ''){
$sql .= ' AND ProdukName Like ?';
}
if($produkcode != ''){
$sql .= ' AND Produkcode Like ?';
}
if($stmt = $mysqli->prepare($sql)){
$stmt->bind_param ('ss', $produkname, $produkcode)
$stmt->execute();
//else code
}
如果$produkname
或$produkcode
值之一为空,则我无法bind_param
I cannot bind_param if one of $produkname
or $produkcode
value is empty
推荐答案
您还可以将call_user_func_array
与$stmt->bind_param
结合使用来进行类似的操作:
You could also utilize call_user_func_array
with $stmt->bind_param
to do something like this:
<?php
$sql = 'SELECT ProductName, ProductId FROM Product WHERE 1=1'
$types = '';
$params = array(&$types);
if($produkname != ''){
$sql .= ' AND ProdukName Like ?';
$types .= 's';
$params[] = $produkname;
}
if($produkcode != ''){
$sql .= ' AND Produkcode Like ?';
$types .= 's';
$params[] = $produkcode;
}
if($stmt = $mysqli->prepare($sql)){
if (!empty($types)) {
call_user_func_array(array($stmt, 'bind_param'), $params);
}
$stmt->execute();
//else code
}
这篇关于$ stmt-> bind_param()(如果条件查询)动态的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!