所以我在我的数据库中发布了一些字符串。我希望它能够检查我的数据库中是否已经存在一个与新名称相同的id。在这种情况下,它应警告“无效”。我也经历过,在某些情况下,即使id与其他ID不同,它也根本不保存字符串。不知道为什么会发生这种情况。
这是我的代码
$.ajax({
type : "POST",
url : "saveid.php",
data: {"qid": id, "qtext1": text1, "qtext2": text2, "qtext3": text3, "allCounters": allCounters},
dataType: "json",
success: function(msg2){
if (msg2 = 'notvalid') {
alert(msg2);
}
if (msg2 = 'valid') {
alert(msg2);
}
}
});
<?php
if (isset($_POST['qid']) && isset($_POST['qtext1']) && isset($_POST['qtext2']) && isset($_POST['qtext3']) && isset($_POST['allCounters'])) {
$connection = @mysql_connect('localhost', 'root', '')
or die (mysql_error());
mysql_select_db('test', $connection)
or die (mysql_error());
$id=$_POST['qid'];
$text1=$_POST['qtext1'];
$text2=$_POST['qtext2'];
$text3=$_POST['qtext3'];
$allCounters=$_POST['allCounters'];
$result = mysql_query("SELECT * FROM code WHERE id ='$id' LIMIT 1");
if (mysql_fetch_row($result)) {
echo json_encode('notvalid');
} else {
$query = mysql_query("INSERT INTO code (id, text1, text2, text3, allCounters) VALUES ('$id','$text1','$text2','$text3','$allCounters')");
echo json_encode('valid');
}
}
?>
这是我第一次使用PHP。如果有人可以解释为什么这不起作用,如何使其工作或任何其他提示,我将不胜感激。感谢
答案 0 :(得分:1)
在回答你的问题时,请参阅mysql_num_rows函数。
if (mysql_num_rows($result)) {
echo json_encode('notvalid');
}
顺便说一句,也考虑不使用mysql_ *函数,因为它们已被弃用,不鼓励使用它们。 Mysqli和PDO是PHP本机替代品。
如果您正在使用mysql_函数,则需要确保使用mysql_real_escape_string()转义进入数据库的值以防止SQL注入。有关信息,请参阅http://en.wikipedia.org/wiki/SQL_injection。
答案 1 :(得分:1)
请再次检查您的代码。
您正在分配值,而不是检查ajax成功回调中的相等性。因此,这两个语句都适用于您的代码,并且两个警报都会触发。
从
改变if (msg2 = 'notvalid') {
^
到
if (msg2 == 'notvalid') {
^^
同样适用于if (msg2 = 'valid')
。