2012-05-11 40 views
0

嘿,我試圖驗證我的xml文件中的用戶名和密碼是否與我的數據庫中的用戶名和密碼相同,但mysql_num_rows是零。所以,我的SELECT查詢一定是錯的。 這是我的代碼:我的SELECT查詢是否錯誤?

public function verifyDB() 
{ 
    //connection to database 
    mysql_connect('localhost','root','') or die(mysql_error()); 
    mysql_select_db('proiect_is') or die(mysql_error()); 

    $data =mysql_query("SELECT id FROM users WHERE userName ='$this->xml->parameters->username' AND password ='$this->xml->parameters->pass'"); 
    //we check if any row was returned 
    echo $data; 
    echo $this->xml->parameters->username."<BR>"; 
    echo $this->xml->parameters->pass."<BR>"; 
    print_r(mysql_num_rows($data)); 
    if (mysql_num_rows($data)) 
    { 

     $row = mysql_fetch_assoc($data); 
     $this->_id= $row['id']; 
     echo $row; 
     return true; 
    } 
    else 
    {return false;} 

} 

這是我的xml login文件:

<xml version=""> 
    <action>log_in</action> 
    <parameters> 
    <username>Ionel P</username> 
<pass>abdef01</pass> 
    </parameters> 
</xml> 
+1

什麼是'回聲$數據的輸出;'? – drew010

+0

確保您的表格字段名稱在您的查詢中正確;如果我記得正確,mysql是區分大小寫的。 – Vulcan

回答

1

嘗試:

$data =mysql_query("SELECT id FROM users WHERE userName ='".$this->xml->parameters->username."' AND password ='".$this->xml->parameters->pass."'"); 
+0

謝謝!它的工作:) – Dianna

8

,如果你在一個字符串變量插入,你應該使用{}像這樣:

"SELECT id FROM users WHERE userName ='{$this->xml->parameters->username}' AND password ='{$this->xml->parameters->pass}'" 

這告訴解析器插入變量$this->xml->parameters->username它否則只能嘗試使用$this(和葉->xml->parameters->username文本至極在結束了「[你對象的toString文本] - > XML->參數 - >用戶名」這顯然是錯誤的)。

+0

感謝您的解釋:) – Dianna

1

是否

$data =mysql_query("SELECT id FROM users WHERE userName ='$this->xml->parameters->username' AND password ='$this->xml->parameters->pass'"); 
echo mysql_error(); 

返回任何錯誤?這應該能夠讓你很好地指出問題出在哪裏。

+0

問題解決。謝謝 – Dianna

1

試試這個:

$data =mysql_query(sprintf("SELECT id FROM users WHERE userName ='%s' AND password ='%s'", mysql_real_escape_string($this->xml->parameters->username), mysql_real_escape_string($this->xml->parameters->pass)));