#php #mysql
#php #mysql
Вопрос:
Итак, в основном я пытался вставить столбцы в мою третью таблицу из столбцов, извлеченных из 2 таблиц ранее.
У меня есть одна информационная таблица, в которой хранится информация о пользователях, одна таблица изображений, в которой хранятся фотографии голов пользователей, и одна таблица идентификаторов, которая похожа на справочную таблицу, предназначенную для отображения правильных фотографий голов, связанных с правильными пользователями, когда это необходимо (например, запрос пользователя или просто отображение …)
Мой код:
$result_1 = mysql_query("SELECT info_id FROM info WHERE info_name = '$_POST[name]'");
$result_2 = mysql_query("SELECT image_id FROM image WHERE image_name = '$_FILES[file][name]'");
$sql = "INSERT INTO id_table (main_id, id_info, id_image)
VALUES (NULL, $result_1, $result_2);";
if(!mysql_query($sql,$connect_database)){
die('Error: ',mysql_error());
}
Итак, приведенные выше коды просто иллюстрируют мою идею:
1. получить идентификатор info из информационной таблицы
2. получить идентификатор изображения из таблицы изображений
3. вставьте оба идентификатора в столбцы в id_table соответственно
Затем я получил эту информацию об ошибке:
Ошибка: у вас ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с ‘id # 4, идентификатор ресурса # 5)’ в строке 1
Я не мог понять, в чем проблема…
Ответ №1:
$result_1
и $result_2
просто содержать указатели на результаты. вам все равно придется перебирать их, чтобы получить фактические значения.
Попробуйте это:
$result_1 = mysql_query("SELECT info_id FROM info WHERE info_name = '$_POST[name]'");
$row1 = mysql_fetch_array($result_1); // get 1st result row
$result_2 = mysql_query("SELECT image_id FROM image WHERE image_name = '$_FILES[file][name]'");
$row2 = mysql_fetch_array($result_2); // get 2nd result row
$sql = "INSERT INTO id_table (main_id, id_info, id_image)
VALUES (NULL, '{$row1['info_id']}', '{$row1['image_id']}');";
if(!mysql_query($sql,$connect_database)){
die('Error: ',mysql_error());
}
Комментарии:
1. Что, если я просто попробую вставить с другим синтаксисом SQL, например, «ВСТАВИТЬ В id_table (параметры) ВЫБЕРИТЕ .. От.. ГДЕ ..»
2. честно говоря, я все еще в растерянности (я новичок ..). не могли бы вы быть более конкретными?
3. @y26jin я все это написал для тебя. вы должны сначала получить результаты, прежде чем сможете поместить их в базу данных….
4. Спасибо, чувак, это было очень полезно, я приму это как ответ через 5 минут
Ответ №2:
В вашем коде вы просто выполняете запрос. Но вы не извлекли значение поля или столбца. вы можете извлечь его с помощью mysql_fetch_array или mysql_fetch_row.
Я изменяю код в соответствии с вашими потребностями:
$result_1 = mysql_query("SELECT info_id FROM info WHERE info_name = '$_POST[name]'");
$row1 = mysql_fetch_row($result_1);
$infoid = $row1[0];
$result_2 = mysql_query("SELECT image_id FROM image WHERE image_name = '$_FILES[file][name]'");
$row2 = mysql_fetch_row($result_2);
$imageid = $row2[0]
$sql = "INSERT INTO id_table (main_id, id_info, id_image) VALUES (NULL, $infoid, $imageid);";
if(!mysql_query($sql,$connect_database)){ die('Error: ',mysql_error()); }
для получения дополнительной информации см. :-
http://in3.php.net/manual/en/function.mysql-fetch-row.php
http://in3.php.net/manual/en/function.mysql-fetch-array.php