Задать вопрос
  • Почему такая разница в производительности laravel на хостинге и на локалке?

    @r2eo Автор вопроса
    Разобрался.... Дело было в хостинге, на другом все летает. Спасибо за ответы...
    Ответ написан
    Комментировать
  • В чем смысл Prepared Statements MySQL если внешние данные идут в начале в запрос SET?

    @r2eo Автор вопроса
    Спасибо за ответы.
    Дело в том что я хотел написать функцию с помошью которой можно былобы нормально получать массив, без $stmt->bind_result работать с которым не очень удобно.
    Проблема в том что, чтобы выполнить Execute вначале в запрос нужно передать параметры которые подвержены:
    // пришло из гета
    	$_GET['id'] = 3;
    	$_GET['name'] = "fff'; DROP TABLE child;--";
    	$_GET['alias'] = "мммм";	
    //подготавливаем запрос	
    	$query = "PREPARE prQuery FROM 'SELECT `id` FROM `article` WHERE `id` = ? && `name` = ? && `alias` = ?';";	
    // связываем данные 	
    	$querySet = "SET @varData1 = $_GET['id']; SET @varData2 = '$_GET['name']'; SET @varData3 = '$_GET['alias']';";

    получается:
    SET @varData1 = 3; SET @varData2 = 'fff'; DROP TABLE child;--'; SET @varData3 = 'мммм';

    // multi_query потому что по одной долбить сервер нет смысла особенно если переменных будет много
    // возможно $stmt->bind_param делает тоже самое только с экранированием				
    	$mysqli->multi_query($querySet); // и табличке кирдык
    	$queryExecute = "EXECUTE prQuery USING @varData1, @varData2, @varData3;";
    Ответ написан
    Комментировать