2017-01-01 199 views
0

我試圖使用一個查詢來查找與在文本輸入框中輸入的用戶名相關的用戶標識。然後,我嘗試使用我在上一個查詢中找到的用戶標識從同一數據庫的另一個表中選擇詳細信息。然而,當我嘗試這個,我得到的錯誤:如何在另一個查詢(PHP)中使用一個SQL查詢的結果

Catchable fatal error: Object of class mysqli_result could not be converted to string in /home/jack/public_html/viewfriendlogbook.php on line 22 

我認爲,這是因爲我想使用這個變量實際上是一個對象,而不是一個整數,但我不知道如何解決這個問題。任何幫助將不勝感激。

我的PHP:

<?php 

SESSION_START(); 


$servername = "localhost"; 
$username = "MY USERNAME"; 
$password = "MY PASSWORD"; 
$dbname = "MY DATABASE NAME"; 

$conn = new mysqli($servername, $username, $password, $dbname); 

if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$user= $_POST['textinput']; 

$finduserid = "SELECT `user-id` FROM `users` WHERE `username` = $user"; 
$requesteduserid = mysqli_query($conn,$finduserid); 

echo $requesteduserid ; 

$sql = "SELECT * FROM `climbs` WHERE `userlogged` = '$requesteduserid'"; 
$result = mysqli_query($conn,$sql); 

echo '<style> 

table, th, td { 
    border: 1px solid black; 
} 

</style>'; 

if ($result->num_rows > 0) { 
    echo "<table><tr><th>Climb</th><th>Crag</th><th>Grade</th> <th>Description</th></tr>"; 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
     echo "<tr><td>" . $row["climbname"]. "</td><td>" .  $row["cragname"]. "</td><td> " . $row["grade"]. "</td><td>" .  $row["description"]. "</td></tr>"; 
    } 
    echo "</table>"; 
} else { 
    echo "0 results"; 
} 


$conn->close(); 
?> 
+0

此主題可能對您有幫助嗎? http://stackoverflow.com/questions/21722375/object-of-class-mysqli-result-could-not-be-converted-to-string-in – Tina

回答

0

如果我參加了行號22爲真正的錯誤信息點,那麼我想這是你的查詢請求finduserid的問題。 請注意mysqli_query對於SELECT -queries返回一個mysqli_result對象,它是一個迭代器,而不是「簡單」值(參見php mysqli::query-reference)。 所以下面的代碼應該可以解決你的問題:

$finduserid = "SELECT `user-id` FROM `users` WHERE `username` = '$user'"; 
$requesteduserid = mysqli_query($conn,$finduserid); 
$row = mysqli_fetch_row($requesteduserid); 
$userid = $row['user-id']; 
... 
+0

我認爲它不能在回聲中輸出它,因爲它不是一個字符串,但我無法弄清楚如何使它成爲一個 –

+0

您是否直接在數據庫中嘗試查詢?它是否只返回一個值? –

+0

如果我需要來自網站的信息,如何在數據庫中運行查詢? –

0

如果你願意,你還可編寫一個查詢到同樣的效果:

$sql = "SELECT * FROM climbs 
       WHERE userlogged = (SELECT user_id FROM users WHERE username = $user) 
     "; 

或者......

$sql = "SELECT c.* FROM climbs c 
        INNER JOIN users u 
       ON c.userlogged = u.user_id 
       AND u.username = $user 
     "; 

建議在SELECT語句中包含來自「爬升」的特定列名稱。如果某個列名出現在「爬」和「用戶」表中,那麼必須通過在表名之前(或別名;例如:c.userlogged,u.user_id等)來區分它們, 。

相關問題