Сохранение image_id после загрузки изображения в таблицу статей - PullRequest
1 голос
/ 24 марта 2010

Согласно этому вопросу мне удалось создать загружаемое изображение, но теперь мне нужно сохранить image_id в другой таблице с именем articles. Я не знаю, если это правильно, но я попытался выбрать image_id из изображения таблицы, как это

$select_image=mysql_query("select image_id from image where image_name = $fileName") or die(mysql_error());

и извлеките результат в мой запрос на вставку статьи, как этот

$fetch=mysql_fetch_array($select_image);

$query=mysql_query("insert into articles (article_name,article_category,article_subcategory,article_body,article_summary,article_tags,article_photo,article_timedate) values ('$article_title','$CategoryID','$ProductID','$article_body','$article_summary','$fetch[image_id]','$time')") or die ('Error, Query Faild'.mysql_error());

Это правильно? Mysql_error продолжает говорить

Неизвестный столбец 'Penguins.jpg' в 'предложении where'

Ответы [ 4 ]

3 голосов
/ 24 марта 2010

Это вопрос, связанный с синтаксисом mysql. Все данные, поступающие непосредственно в запрос, должны быть подготовлены с использованием 2 правил:
1. данные должны быть экранированы с помощью функции mysql_real_escape_string ()
2. заключено в кавычки

Итак, код должен быть

$fileName=mysql_real_escape_string($fileName);
$select_image=mysql_query("select image_id from image where image_name = '$fileName'") or die(mysql_error()); 

Кроме того, если вы вставили свое изображение непосредственно перед этим запросом, нет необходимости выбирать его идентификатор. Вы можете использовать mysql_insert_id() функцию

2 голосов
/ 24 марта 2010

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

select image_id from image where image_name = Penguins.jpg

Что еще хуже, кто-то загрузил файл с именем

1; ЗЛОЙ МЫСК ВОПРОС ЗДЕСЬ

они смогут выполнить произвольный MySQL на вашем сервере. Это известно как атака SQL-инъекцией.

Посетите страницу руководства PHP , которая охватывает это.

1 голос
/ 24 марта 2010

вы можете выбрать последний вставленный идентификатор, позвонив

SELECT LAST_INSERT_ID()

вместо

select image_id from image where image_name = $fileName
0 голосов
/ 24 марта 2010

Вам нужно поставить $fileName в кавычки в первом запросе, т.е. '$fileName'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...