2012-06-07 4 views
2

У меня возникли проблемы с вставкой запроса в базу данных. У меня есть эта php-форма, которая должна делать запрос вставки, но ничего не происходит, даже ошибка.PHP MySQL Query не вставляет

Это пример запроса с формой:

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' 

Кто-нибудь знает, что я делаю неправильно? :/

+6

Идентификаторы MySQL должны быть указаны с использованием символа обратной строки 'not the apostrophe character '. – eggyal

+4

Вы не проводите проверку ошибок, поэтому неудивительно, что она не выводит ошибку, даже если она есть, не так ли? В руководстве по 'mysqli_query()' показано, как проверить наличие ошибок: http://php.net/manual/en/mysqli.query.php –

+1

Имена столбцов должны быть обратными, а не кавычками –

ответ

2

Прочитать сообщение об ошибке. Какое сообщение об ошибке? Ну, это еще одна проблема, но он сказал бы , почему вставка не удалась .

Одна (но, возможно, не единственная) проблема, упомянутая в комментариях, заключается в том, что ' не является допустимой цитатой и, следовательно, приводит к ошибке синтаксического анализа. В MySQL значение по умолчанию - `, но его можно изменить (до ") при использовании ANSI quotes.

INSERT INTO FlashVideoList (`title`, ...) 

Here is an example of basic error handling для MySQLi (прокрутите вниз). Основная идея заключается в том, что если query возвращает FALSE, то что-то не удалось, и error можно/следует проконсультировать.

Кроме того, я бы рекомендовал очистить код и избавиться от вызова функции «прокси».

+1

Почему бы вам не привести пример получения сообщения об ошибке? –

2

msysqli_error() Используйте, чтобы помочь найти ошибку

например. mysqli_query($query) or die(mysqli_error());

1

Зачем использовать обратные метки (или одинарные кавычки) в первую очередь? Они позволяют использовать зарезервированные слова, но это не то, что я буду распространять. Вместо этого используйте разумные имена столбцов.

Смежные вопросы