2013-07-12 46 views
0

有了這段代碼,如果我從查詢中刪除內部聯接,一切都會正常工作。 另外,我試着從phpMyAdmin查詢,它工作得很好。內部加入MySQL的MySQL查詢不起作用

這裏是我的代碼:

  $db = mysql_connect("localhost", USERNAME,PASSWORD); 
    if (!$db) { 
     echo("<p>Error creating Database Connection</p>"); 
     exit; 
     } 

     $db_selected = mysql_select_db(DATABASE_NAMEPH,$db); 

$sql = "SELECT * FROM user " + 
"INNER JOIN gender ON user.id = gender.user_id "+ 
"INNER JOIN user_address ON user.id = user_address.user_id "+ 
"INNER JOIN address ON address.id = user_address.address_id;"; 


$result = mysql_query($sql,$db); 
if(!$result){ 
echo("<p>Unable to query database at this time.</p>"); 

} 
$num_results = mysql_num_rows($result); 
mysql_close($db); 

while($row = mysql_fetch_assoc($result)){ 

echo" <form name='register' class='register'> "; 
echo" <fieldset class='row1'>"; 
echo" <legend>".$row["fName"].", ".$row["lName"]."'s Personal Details</legend>   </fieldset>"; 
echo" <p><label>Email:</label><data> ".$row["email"]."</data> </p>"; 
echo" <p><label>First Name:</label><data> ".$row["fName"]."</data></p>"; 
echo" <p><label>Last Name:</label><data> ".$row["lName"]."</data></p>";  
echo" <p><label>Phone:</label><data> ".$row["phone"]."</data></p>"; 
echo" <p><label>Street:</label><data> ".$row["street"]."</data></p>"; 
echo" <p><label>City:</label><data> ".$row["city"]."</data></p>"; 
echo" <p><label>State: </label><data>".$row["state"]."</data></p>"; 
echo" <p><label>Zip Code:</label><data> ".$row["zip"]."</data></p>"; 
echo" <p><label>Gender:</label><data> ".$row["name"]."</data></p>"; 
echo" <p><label>Birthdate:</label><data> ".$row["bDate"]."</data></p>"; 
echo" <p><label>Additional Info:</label><data> ".$row["info"]."</data></p>"; 
echo" <p><label>Admin:</label><data> ".$row["flag"]."</data></p></fieldset></form>"; 


    } 

?> 
<h3 id="path">Number of users registered: <?php echo $num_results; ?></h3> 

以下是錯誤消息我得到:

Unable to query database at this time. 

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in 
/Users/mjramahi/Sites/web/admin/users.php on line 129 

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in 
/Users/mjramahi/Sites/web/admin/users.php on line 132 
+3

PHP使用點'.'進行連結,而不是'+',你在你的SQL語句有。使用'+'可能會導致將字符串錯誤地轉換爲整數(零),並將它們添加到SQL語句的int 0中。 –

+0

@MichaelBerkowski說什麼。因此,總是在執行轉儲(或調試)時查找正在查詢的問題,而不是假設您複製並粘貼到phpMyAdmin的問題與真實查詢相同。儘管避免了不推薦的mysql_ *函數... – markdwhite

+1

這個問題似乎是無關緊要的,因爲問題是一個錯字。 –

回答

1

使用點到Concat的字符串,而不是加號。 PHP將你的變量視爲整數,$ sql變爲0(檢查它!)。試試這個:

$sql = "SELECT * FROM user " . 
"INNER JOIN gender ON user.id = gender.user_id ". 
"INNER JOIN user_address ON user.id = user_address.user_id ". 
"INNER JOIN address ON address.id = user_address.address_id;"; 
+0

應該在前面放上「使用dota連接字符串」:P – Populus

+0

@Populus現在好了嗎?隨意編輯。 – user4035

+0

嘿嘿,我只是挑剔XD – Populus