2012-02-27 17 views
1

我現在有最奇怪的問題。爲了查看聯繫人是否已經在數據庫中,我檢查它。對我來說,我會迴應:「在數據庫中」或「不在數據庫中」。爲了讓使用者看到我用同樣的按摩給他回來了弦。奇怪的是,回聲總是正確的,但字符串總是相同的「不在數據庫中」,即使聯繫人在數據庫中。例如:我添加我的媽媽。我的媽媽在數據庫中,所以回聲是正確的,並說「在數據庫中」。但是我得到的字符串總是說「不在數據庫中」。PHP文件返回正確的回聲,但在數據庫中寫入錯誤的字符串

的完整代碼

<?php 
    $DB_HostName = "localhost"; 
    $DB_Name = "db"; 
    $DB_User = "user"; 
    $DB_Pass = "pw"; 
    $DB_Table = "contacts"; 

    $con = mysql_connect($DB_HostName,$DB_User,$DB_Pass) or die (mysql_error()); 
    mysql_select_db($DB_Name,$con) or die(mysql_error()); 

    $fnumber = mysql_real_escape_string($_GET["fnumber"]); 

    $result = mysql_query("SELECT * FROM $DB_Table WHERE User = '$fnumber'", $con); 

    if ($result) { 

     if (mysql_num_rows($result) > 0) { 

      echo "This user is already in database"; 

      $number = mysql_real_escape_string($_GET["number"]); 

      mysql_query("DELETE FROM Echo WHERE Number=('$number')"); 

      mysql_query("INSERT INTO Echo (Number,Answer) 
      VALUES ('$number','This user is already in database.')"); 
     } 

     else echo 
      "This user isn't in the database"; 

     $number = mysql_real_escape_string($_GET["number"]); 

     mysql_query("DELETE FROM Echo WHERE Number=('$number')"); 

     mysql_query("INSERT INTO Echo (Number,Answer) 
     VALUES ('$number','this user isn't in the database.')"); 
    } 

    mysql_close($con); 
?> 

而且你問之前:爲了不擠我的數據庫,我總是刪除的號碼,然後寫的條目。

+1

「你問之前:爲了不擠我的數據庫,我總是刪除的號碼,然後寫的條目。」 您是否知道您可以更新現有行中的數據? – BenOfTheNorth 2012-02-27 14:29:19

回答

2

我想這是正確的代碼:

if ($result) { 

    if (mysql_num_rows($result) > 0) { 

     echo "This user is already in database"; 

     $number = mysql_real_escape_string($_GET["number"]); 

     mysql_query("DELETE FROM Echo WHERE Number=('$number')"); 

     mysql_query("INSERT INTO Echo (Number,Answer) 
     VALUES ('$number','This user is already in database.')"); 

    } else { 

      echo "This user isn't in the database"; 

     $number = mysql_real_escape_string($_GET["number"]); 

     mysql_query("DELETE FROM Echo WHERE Number=('$number')"); 

     mysql_query("INSERT INTO Echo (Number,Answer) 
     VALUES ('$number','this user isn't in the database.')"); 
    } 
} 
+3

+1此外,'VALUES('$ number','這個用戶不在數據庫中。')「) ;''''''''''逃脫 – 2012-02-27 14:31:52

+0

非常感謝你,哈哈總是和我一樣,忽略括號或者其他同樣愚蠢的東西.... – Blade 2012-02-27 14:35:47

+0

@JoachimIsaksson,字符串在雙引號之間,沒有必要。 – mariogl 2012-02-27 14:36:24

1

您需要的

else echo "This user isn't in the database"; 
+0

不,它仍然給我錯誤的字符串回來。 ( – Blade 2012-02-27 14:29:42

+0

)''echo''和一個額外的右括號在底部需要一個左括號。 – 2012-02-27 14:32:22

1
else echo 
"This user isn't in the database"; 

$number = mysql_real_escape_string($_GET["number"]); 

mysql_query("DELETE FROM Echo WHERE Number=('$number')"); 

mysql_query("INSERT INTO Echo (Number,Answer) 
VALUES ('$number','this user isn't in the database.')"); 

下三條線就一定會執行第二閉合},因爲沒有括號else後。第二個mysql_query將永遠失敗,因爲'沒有被轉義。

1

您還沒有括號環繞整個else分支。這樣,在else echo之後的所有內容此用戶不在數據庫中「;」被執行,它會覆蓋你的上述數據。

else分支應該是這樣的:

else 
    { // <-- NEW 
     echo "This user isn't in the database"; 

     $number = mysql_real_escape_string($_GET["number"]); 

     mysql_query("DELETE FROM Echo WHERE Number=('$number')"); 

     mysql_query("INSERT INTO Echo (Number,Answer) 
     VALUES ('$number','this user isn't in the database.')"); 
    } // <-- NEW 
} 
相關問題