2010-11-07 54 views
-2

解决方案:我指出了错误的数据库感谢您的帮助。php/mysql select语句可以手动工作,但不能通过代码

下面的计数返回0但是当我手动运行它有一个结果。

通过手动我的意思是复制我的代码echo'd SQL并粘贴到mySQL命令。

<? 
$host="localhost"; // Host name 
      $username="userName"; // Mysql username 
      $password="userPW"; // Mysql password 
      $db_name="dbName"; // Database name 
      $tbl_name="userBase"; // Table name 

      // Connect to server and select databse. 
      $link=mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
      mysql_select_db("$db_name")or die("cannot select DB"); 

      // username and password sent from form 
      $user=$_POST['user']; 
      $pass=$_POST['pass']; 


      // To protect MySQL injection (more detail about MySQL injection) 
      $user = stripslashes($user); 
      $pass = stripslashes($pass); 
      $user = mysql_real_escape_string($user); 
      $pass = mysql_real_escape_string($pass); 

       $salt = substr($pass, 0, 1); 
       $encrypted_pswd = crypt($pass, $salt); 

      $sql="SELECT * FROM $tbl_name WHERE user=\"$user\" and pass=\"$encrypted_pswd\";"; 
      echo $sql."<br>"; 
      $result=mysql_query($sql); 




      // Mysql_num_row is counting table row 
      $count=mysql_num_rows($result); 
      echo "count=".$count."<br>"; 
    ?> 
+1

界定 “不工作”。 – 2010-11-07 19:38:34

+0

输出不正确。应该是count = 1,但count = 0。不知道为什么 – 2010-11-07 19:39:28

+0

不确定这是否可行,但您可以尝试在用户和密码周围放置单引号。所以user ='$ user' – Matt 2010-11-07 19:42:16

回答

1

尝试:

$sql = sprintf("SELECT * FROM %s WHERE user='%s' and pass='%s'", $tbl_name, $user, $encrypted_pswd); 
+0

它可以提供什么帮助? – 2010-11-07 20:12:41