所以,我有一个使用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());
?>
答案 0 :(得分:2)
如果您没有收到任何错误并且INSERT
没有发生,则很可能是因为if
语句不成立。验证$type
是否与Just Text
匹配。
您还应该使用prepared statements插入值,并使用PDO或MySQLi - this article来帮助您确定哪些值。
答案 1 :(得分:1)
首先,在if语句之后回显“something”并使用你的ajax帖子调用数据。你可以找出你的if语句是否有效,然后尝试格式化你的变量
mysql_query("INSERT INTO articles (title, type, thisisaninteger, content) VALUES ('$title', '$type', 0, '$content')")or die("MySQL Error: " . mysql_error());
答案 2 :(得分:1)
我只想提出正式投票/建议,转而使用parameterized SQL statement。尽管使用了mysql_real_escape_string,但是通过字符串连接将SQL语句拼接在一起既不是必需的,也不是一个好主意。老实说,我发现一个准备好的语句比典型的字符串连接练习更容易阅读:
$stmt = $dbh->prepare("SELECT * FROM users WHERE USERNAME = ? AND PASSWORD = ?");
$stmt->execute(array($username, $password));
答案 3 :(得分:0)
好吧,这是我身边的一个愚蠢的错误。有一些我没有包含的列,并没有为它们分配值。谢谢大家帮忙。