我在尝试将查询插入数据库时遇到了一些问题。 我有这个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'
任何人都知道我做错了什么? :/
答案 0 :(得分:1)
阅读错误消息。什么错误信息?好吧,这是另一个问题,但它会说为什么插入失败 1 。
评论中提到的一个(但可能不是唯一的)问题是'
不是有效的标识符引用,因此导致解析错误。在MySQL中,默认值为`
,但如果使用ANSI quotes,则可以更改为"
。
INSERT INTO FlashVideoList (`title`, ...)
1 Here is an example of basic error handling(滚动到底部)。基本的想法是,如果query
返回FALSE,那么失败了,可以/应该咨询error
。
另外,我建议清理代码并删除“代理”函数调用。
答案 1 :(得分:1)
使用msysqli_error()
帮助找出错误
例如。 mysqli_query($query) or die(mysqli_error());
答案 2 :(得分:0)
为什么首先使用反引号(或单引号)?他们让你使用保留字,但这不是我传播的东西。改为使用合理的列名称。