0

简单地说,我想用多个条件在数据库中搜索表。如您所见,我尝试在 MySQL 查询中使用ORandLIKE语句。

例如:有一个带有imie列的记录,用Alexis值填充。当$_POST['imie']通过带有Alexis值的代码时,结果是好的,我得到了想要的记录,但即使$_POST['imie']不包含整个字符串(例如Alex)我也想得到它,所以我尝试添加%MySQL 查询。不幸的是,它没有给我任何结果(在我看来,MySQLibind_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";
    }   

感谢您提前回复

4

0 回答 0