0

所以我将一些字符串发布到我的数据库中。我希望它能够检查我的数据库中是否已经存在一个与新的名称相同的 id。在这种情况下,它应该警告“notvalid”。我也经历过,在某些情况下,即使 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。如果有人能解释为什么这不起作用,如何使它起作用或任何其他提示,我将不胜感激。谢谢

4

2 回答 2

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

于 2013-10-21T16:51:19.737 回答
1

请再次检查您的代码。

您正在分配值,而不是检查 ajax 成功回调中的相等性。因此,这两个语句都适用于您的代码,并且两个警报都会触发。

从改变

if (msg2 = 'notvalid') {            
         ^

if (msg2 == 'notvalid') {
         ^^

同样适用if (msg2 = 'valid')

于 2013-10-21T16:57:06.367 回答