我目前有一个只有两个元素的小搜索表单:一个名为search的文本输入和一个名为param的“select”框.在该框中选择的选项应该用作参数,以选择将获取我的数据库中的哪个表列.
使用mysql_函数,可以这样做:
$param = $_POST['param' ];
$search = $_POST['search'];
$query = 'SELECT * FROM table WHERE $param LIKE "%$search%"';
但我无法使用mysqli_语法.我正在尝试使用准备好的语句,但到目前为止我做的最好的是:
$param = $_POST['param' ];
$search = $_POST['search'];
if($param == 'first_name')
{
if($prep = $link->prepare('SELECT * FROM table
WHERE first_name
LIKE CONCAT("%", ?, "%")'))
{
$prep->bind_param('s', $search);
$prep->execute();
$prep->bind_result($first_name, $last_name);
while($prep->fetch())
echo $first_name . ' ' . $last_name;
$prep->close();
}
else
echo 'Error while preparing statement.';
}
else if($param == 'last_name')
{
...
}
但是,只是使用一堆其他ifs似乎有很多重复和非生产性,特别是如果我有很多列要处理.
我尝试的第一件事是参数绑定 – … WHERE? LIKE …和$prep-> bind_param(‘ss’,$param,$search) – 但是它不起作用(我仍然不知道为什么).
有没有办法以更聪明的方式做到这一点?