【发布时间】:2012-06-07 21:02:11
【问题描述】:
我在尝试将查询插入数据库时遇到了一些问题。 我有这个应该执行插入查询的 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);
感谢您的帮助,谢谢 选择查询可以使用相同的代码正常工作
编辑:好的,我已经取得了一些进展,似乎这段代码几乎所有可能的问题都是错误的: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'
有人知道我做错了什么吗? :/
【问题讨论】:
-
MySQL 标识符应该使用反引号字符 ` 而不是撇号字符'。
-
您没有进行任何错误检查,所以难怪即使有错误它也不会输出错误,不是吗?
mysqli_query()上的手册显示了如何检查错误:php.net/manual/en/mysqli.query.php -
列名应该用反引号,而不是引号
-
能否直接在数据库中运行那个INSERT查询,看看是否产生错误?
-
使用反引号应该可以解决问题,但请确保您确实添加了一些错误处理。还有一件事,考虑使用参数化查询,这些将不再需要
real_escape_string: stackoverflow.com/questions/728229/parameters-in-mysqli