Всем доброго времени суток: я бы хотел параметризовать свои запросы, создав функцию, которая получает мой запрос, соединение и массив с параметрами, выраженными как "?".Моя функция:
receiveQuery($query, $mysqli1, $array1)
Я читал о внедрении SQL, я хотел бы знать, что если это правильный способ избежать этого.Я планирую использовать эту функцию для INSERT, DELETE, UPDATE и SELECT.Также я хотел бы, чтобы вы рассказали мне, как я могу создать лучшую обработку для более чем одного параметра, потому что в настоящее время я использую переключатель.Но каждый раз, когда мне требуются дополнительные параметры, я увеличиваю значение параметра и хочу создать его динамически.
SWITCH ($array1Length)
Любые комментарии полезны, с уважением.Фелипе
<?php
$mysqli1 = openConn();
$query = "INSERT INTO tblTest (field1 , field2 ) VALUES (?,?)";
$array1 = array($value1, $value2);
$result = receiveQuery($query, $mysqli1, $array1);
if($stmt->affected_rows == 1)
{
$success = "Success.";
}
if($stmt->affected_rows == -1)
{
$error = "Error.";
}
closeConn($stmt);
closeConn($mysqli1);
function openConn()
{
$mysqli1 = new mysqli('localhost', 'userTest', '123', 'dbTest');
if ($mysqli1->connect_error) {
die('Connect Error (' . $mysqli1->connect_errno . ') '
. $mysqli1->connect_error);
}
return $mysqli1;
}
function receiveQuery($query, $mysqli1, $array1)
{
global $stmt;
$stmt = $mysqli1->prepare($query);
if (false===$stmt)
{
echo $mysqli1->error;
die('Error');
}
$array1Length = count($array1);
SWITCH ($array1Length)
{
CASE 0: break;
CASE 1: $stmt->bind_param("s" , $array1[0]) ;break;
CASE 2: $stmt->bind_param("ss" , $array1[0],$array1[1]) ;break;
CASE 3: $stmt->bind_param("sss" , $array1[0],$array1[1],$array1[2]) ;break;
CASE 4: $stmt->bind_param("ssss", $array1[0],$array1[1],$array1[2],$array1[3]);break;
DEFAULT : echo "Error";
}
$stmt->execute();
$result = $stmt->get_result();
return $result;
}
function closeConn($mysqli1)
{
$mysqli1->close();
}
?>