Я пытаюсь санировать свои вызовы SQL, и я застрял там, где я использую LIKE
заявление. Я пробовал большинство ответов на SO, но большинство из них в PDO, или это очень запутанно.
Это оригинальный код, который у меня работает.
if(isset($_POST['search']))
{
$valueToSearch = $_POST['valueToSearch'];
$query = "SELECT * FROM `galleries_info`
WHERE CONCAT(`Gallery_Id`,`Gallery_Name`,`Gallery_Type_Id` )
LIKE '%".$valueToSearch."%'";
$search_result = filterTable($query);
}
else {
$search_result = "Search something";
}
// function to connect and execute the query
function filterTable($query)
{
include 'db_connect.php';
$link = mysqli_connect($host, $username,$password ,$db );
$filter_Result = mysqli_query($link, $query);
return $filter_Result;
}
Вот так я и пробовал продезинфицировать. К вашему сведению, я опередил filterTable
функционировать здесь, так как я думал stmt
получает запрос уже
if(isset($_POST['search']))
{
$valueToSearch = $_POST['valueToSearch'];
/*$query = "SELECT * FROM `galleries_info`
WHERE CONCAT(`Gallery_Id`,`Gallery_Name`,`Gallery_Type_Id` )
LIKE '%".$valueToSearch."%'"; */
$query = "SELECT * FROM `galleries_info`
WHERE CONCAT(`Gallery_Id`,`Gallery_Name`,`Gallery_Type_Id` )
LIKE ?";
$stmt = mysqli_prepare($link, $query);
if($stmt){
$vts = "%.$valueToSearch.%";
mysqli_stmt_bind_param($stmt, "s", $vts);
mysqli_stmt_bind_result($stmt, $dbvts);
mysqli_stmt_execute($stmt);
mysqli_stmt_fetch($stmt);
}else{
echo "no stmt";
}
//$search_result = filterTable($query);
}
else {
$search_result = "Search something";
}
// function to connect and execute the query
function filterTable($query)
{
include 'db_connect.php';
$link = mysqli_connect($host, $username,$password ,$db );
$filter_Result = mysqli_query($link, $query);
return $filter_Result;
}
Что я делаю неправильно? Я уверен, что это должно быть с чем-то, касающимся% s в выражении LIKE
Задача ещё не решена.
Других решений пока нет …