MySQLi bind_param使用'%'

时间:2014-07-14 18:01:59

标签: php mysql sql mysqli sqlbindparameter

简单地说,我想用多个标准搜索数据库中的表。正如您所看到的,我尝试在MySQL查询中使用ORLIKE语句进行创建。

例如:有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";
    }   

感谢您提前回复

0 个答案:

没有答案