2012-02-27 46 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 
} 
相关问题