我的MySQL查询有什么问题?

时间:2013-04-18 23:51:26

标签: php mysql

所以,我有一个使用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 个答案:

答案 0 :(得分:2)

如果您没有收到任何错误并且INSERT没有发生,则很可能是因为if语句不成立。验证$type是否与Just Text匹配。

您还应该使用prepared statements插入值,并使用PDOMySQLi - 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)

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