Member 11755075 Ответов: 3

Вставить переменную в ошибка обновления инфраструктуры Куэрри


Я пытаюсь вставить переменную в запрос обновления mysqli , если я добавляю прямое число в запрос обновления, то оно работает, но если я добавляю число в переменную и вставляю переменную в оператор, то оно не работает. Этот нижеприведенный запрос работает

Что я уже пробовал:

$query = 'update `'.$cars.'` set sale_time="'.$time.'" where model=0010';



Но это не работает


$query = 'update `'.$cars.'` set sale_time="'.$time.'" where model="'.$model.'"'; 

Richard MacCutchan

В чем заключается ошибка и каково значение $model при выполнении этой строки?

3 Ответов

Рейтинг:
8

Richard MacCutchan

Я подозреваю, что это двойные кавычки, окружающие $model значение, которое изменяет его из числового элемента в строку. Попробовать это:

$query = 'update `'.$cars.'` set sale_time="'.$time.'" where model='.$model.'';


Member 11755075

спасибо за ответ , я пытаюсь , и если я просто определяю как $model='0010'; это работает, но если я получаю его от $model=$_Post['model']; он перестает работать, как мне это исправить ?

Member 11755075

я смотрел на более старый код и увидел , что эта строка кода работает отлично, поэтому я в замешательстве

'update "'.$table. '" set name="'.$name.'",code="'.$code.'",image="'.$image.'",price="'.$price.'",link="'.$link.'",discount="'.$discount.'",dis_addby="'.$_COOKIE['rna'].'",g_wrap="'.$g_wrap.'",o_st_date="'.$o_st_date.'",o_en_date="'.$o_en_date.'",h_image="'.$h_image.'",sp_pr="'.$sp_pr.'" где id="'.$id.'"

Member 11755075

и вы правы , это тоже работает так, как вы предложили :) спасибо .

Рейтинг:
2

Patrice T

$query = 'update `'.$cars.'` set sale_time="'.$time.'" where model="'.$model.'"';

Ты уверен насчет использования машины ? здесь довольно необычно иметь имя переменной.

Не обязательно решение вашего вопроса, но у вас есть еще одна проблема.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL - OWASP[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? - Обмен Стеками Информационной Безопасности[^]


Рейтинг:
0

Richard Deeming

Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.

PHP: mysqli::подготовка[^]
РНР: mysqli_stmt::bind_param[^]