0

だから私は自分のデータベースにいくつかの文字列を投稿しています。データベースに新しいIDと同じ名前のIDがすでに存在するかどうかを確認できるようにしたい。その場合、「notvalid」と警告する必要があります。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

コードをもう一度確認してください。

ajax成功コールバックで同等性をチェックするのではなく、値を割り当てています。したがって、両方のステートメントがコードに当てはまり、両方のアラートがトリガーされます。

から変更する

if (msg2 = 'notvalid') {            
         ^

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

についてif (msg2 = 'valid')も同様です。

于 2013-10-21T16:57:06.367 に答える
1

あなたの質問への回答として、mysql_num_rows 関数を参照してください。

if (mysql_num_rows($result)) {
    echo json_encode('notvalid');
}

余談ですが、mysql_* 関数は非推奨であり、使用が推奨されていないため、使用しないことも検討してください。MySQLi と PDO は、PHP ネイティブの代替手段です。

mysql_ 関数を使用している場合は、SQL インジェクションを防ぐために mysql_real_escape_string() を使用してデータベースに入る値をエスケープする必要があります。詳細については、 http://en.wikipedia.org/wiki/SQL_injectionを参照してください。

于 2013-10-21T16:51:19.737 に答える