简单地说,我想用多个标准搜索数据库中的表。正如您所看到的,我尝试在MySQL查询中使用OR
和LIKE
语句进行创建。
例如:有imie
列的记录,其中包含Alexis
值。当$_POST['imie']
通过具有Alexis
值的代码时,结果是正常的,我得到了想要的记录,但即使$_POST['imie']
不包含整个字符串,我也希望得到它(例如Alex
),所以我尝试在MySQL查询中添加%
。不幸的是,它没有给我任何结果(在我看来,MySQLi的bind_param
删除了这些字符,以防止SQL注入,我是对的吗?)。
如何将$_POST['imie']
值放在%
个符号中,以便我得到正确的LIKE
子句结果?是否有更整洁和充分的方法来搜索只有给定值的记录?
foreach ($_POST as $key => $value) {
if(isset($value)) {
$value = "%".$value."%"; // I also tried "'%".$value."%'"
}
}
$search = $db->prepare("SELECT * FROM klienci WHERE
PESEL LIKE ? AND
imie LIKE ? AND
nazwisko LIKE ? AND
numer_domu LIKE ? AND
ulica LIKE ? AND
miasto LIKE ? AND
kod_pocztowy LIKE ?");
$search -> bindParam('sssssss', $_POST['PESEL'], $_POST['imie'], $_POST['nazwisko'], $_POST['numer_domu'], $_POST['ulica'], $_POST['miasto'], $_POST['kod_pocztowy']);
$search->execute();
$result = $search->get_result();
while ($row = $result->fetch_array())
{
foreach ($row as $r)
{
print "$r ";
}
print "\n";
}
感谢您提前回复