2017-01-01 193 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等)来区分它们, 。

相关问题