У меня возникли некоторые проблемы с попыткой вставить запрос в базу данных. У меня есть эта php-форма, которая должна делать запрос вставки, но ничего не происходит, даже ошибка.
Это пример запроса с формой:
INSERT INTO FlashVideoList ('title', 'urltitle', 'description', 'tags', 'category', 'filename', 'filetype', 'size', 'uploadedbyuser', 'uploadtime') VALUES ('testtitle','testtitle','test','testtags','FlashVideo','SMILE!.swf','application/x-shockwave-flash','1007525','0','1339102426');
я повторил содержимое запроса, чтобы получить это
Это код php:
function MySqlQuery($Query) { // Invokes global connection info global $MySQL_Host, $MySQL_Username, $MySQL_Password, $MySQL_Database, $MySQL_Port; global $mysqli; // runs query $result = $mysqli->query($Query); return $result; } $mysqli = new mysqli($MySQL_Host, $MySQL_Username, $MySQL_Password, $MySQL_Database, $MySQL_Port); MySqlQuery("INSERT INTO FlashVideoList ('title', 'urltitle', 'description', 'tags', 'category', 'filename', 'filetype', 'size', 'uploadedbyuser', 'uploadtime') " . "VALUES ('" . $mysqli->real_escape_string($_SESSION['Title']) . "','" . $mysqli->real_escape_string(GetUrlTitle()) . "','" . $mysqli->real_escape_string($_SESSION['Description']) . "','" . $mysqli->real_escape_string($_SESSION['Tags']) . "','" . $_SESSION['Category'] . "','" . $mysqli->real_escape_string($FlashFileName) . "','" . $mysqli->real_escape_string($_FILES["file"]["type"]) . "','" . $mysqli->real_escape_string($_FILES["file"]["size"]) . "','" . $mysqli->real_escape_string($UploadUserID) . "','" . time() . "');"); mysqli_free_result($result); mysqli_close($mysqli);
Любая помощь appereciated, спасибо. Выбор запросов отлично работает с этим же кодом
EDIT: Хорошо, я сделал некоторый прогресс, кажется, что обо всем, что возможно, не так с этим кодом: P, так что это мой запрос сейчас:
INSERT INTO FlashVideoList (`title`, `urltitle`, `description`, `tags`, `category`, `filename`, `filetype`, `size`, `uploadedbyuser`, `uploadtime`) VALUES (`letitle`,`letitle`,``,`tagzz`,`FlashVideo`,`585336_pokemonsnewgrounds.swf`,`application/x-shockwave-flash`,`5058231`,`0`,`1339103842`);
И если я запустил его прямо через navicat, я получу ошибку:
[Err] 1054 - Unknown column 'letitle' in 'field list'
Кто-нибудь знает, что я делаю неправильно? : /
Прочтите сообщение об ошибке. Какое сообщение об ошибке? Ну, это еще одна проблема, но он сказал бы, почему вставка потерпела неудачу 1 .
Одна (но, возможно, не единственная) проблема, упомянутая в комментариях, заключается в том, что '
не является допустимой цитатой идентификатора и, следовательно, приводит к ошибке синтаксического анализа. В MySQL по умолчанию используется `
, но его можно изменить (на "
), если использовать котировки ANSI .
INSERT INTO FlashVideoList (`title`, ...)
1 Ниже приведен пример базовой обработки ошибок для mysqli (прокрутка вниз). Основная идея заключается в том, что если query
возвращает FALSE, то что-то не получается, и с error
можно / следует проконсультироваться.
Кроме того, я бы рекомендовал очистить код и избавиться от вызова функции «прокси».
Используйте msysqli_error()
чтобы узнать об ошибке
например. mysqli_query($query) or die(mysqli_error());
Зачем использовать backticks (или одинарные кавычки) в первую очередь? Они позволяют использовать зарезервированные слова, но это не то, что я буду распространять. Вместо этого используйте разумные имена столбцов.