发布并检查数据库PHP中是否已存在值

时间:2013-10-21 16:44:27

标签: php jquery ajax

所以我在我的数据库中发布了一些字符串。我希望它能够检查我的数据库中是否已经存在一个与新名称相同的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。如果有人可以解释为什么这不起作用,如何使其工作或任何其他提示,我将不胜感激。感谢

2 个答案:

答案 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')