0

所以,我有一个使用 ajax 发布到我的 php 文件的表单,并且成功了。但是下面的查询没有插入任何东西。有人可以帮我理解我做错了什么吗?

我的 php 文件:

<?php

include 'connect.php' ;

$type = mysql_real_escape_string($_POST['type']);

$title = mysql_real_escape_string($_POST['title']);

$content = mysql_real_escape_string($_POST['content']);

if ($type == 'Just Text') {

    mysql_query("INSERT INTO articles (title, type, thisisaninteger, content) VALUES ('".$title."', '".$type."', 0, '".$content."')")or die("MySQL Error: " . mysql_error());

}

?>

我的connect.php:

<?php

$dbhost = "localhost"; 
$dbname = "example";
$dbuser = "test"; 
$dbpass = "test"; 

mysql_connect($dbhost, $dbuser, $dbpass) or die("MySQL Error: " . mysql_error());  
mysql_select_db($dbname) or die("MySQL Error: " . mysql_error());

?>  
4

4 回答 4

2

如果您没有收到任何错误并且INSERT没有发生错误,则很可能是因为该if陈述不正确。验证$type实际匹配Just Text

您还应该使用准备好的语句插入值,并使用PDOMySQLi -本文将帮助您确定哪个。

于 2013-04-19T00:00:58.310 回答
1

首先,在 if 语句后回显“某事”,并使用您的 ajax 帖子调用数据。您可以确定您的 if 语句是否有效,然后尝试像这样格式化您的变量

mysql_query("INSERT INTO articles (title, type, thisisaninteger, content) VALUES ('$title', '$type', 0, '$content')")or die("MySQL Error: " . mysql_error());
于 2013-04-19T00:01:39.503 回答
1

我只想投正式投票/建议,以支持切换到参数化 SQL 语句。尽管使用了 mysql_real_escape_string,但通过字符串连接将 SQL 语句连接在一起既没有必要也不是一个好主意。老实说,我发现一个准备好的语句比典型的字符串连接练习更容易阅读:

$stmt = $dbh->prepare("SELECT * FROM users WHERE USERNAME = ? AND PASSWORD = ?");
$stmt->execute(array($username, $password));
于 2013-04-19T00:33:02.963 回答
0

好吧,这是我的一个愚蠢的错误。有些列我没有包括在内,并且没有为它们分配值。谢谢大家帮忙。

于 2013-04-19T00:24:59.377 回答