我收到错误:
Object of class mysqli_result could not be converted to string
这是我的代码:
$username2 = htmlentities($_SESSION['user']['username'], ENT_QUOTES, 'UTF-8');
$con = mysqli_connect('localhost','root','','test');
$result = mysqli_query($con, "SELECT classtype FROM learn_users
WHERE username='$username2';");
echo "my result <a href='data/$result.php'>My account</a>";
答案 0 :(得分:36)
mysqli_query()
将对象资源返回到$result
变量,而不是字符串。您需要将其循环然后访问记录。您无法直接将其用作$result
变量。
while ($row = $result->fetch_assoc()) {
echo $row['classtype']."<br>";
}
答案 1 :(得分:3)
在使用$result
变量之前,您应该使用$row = mysql_fetch_array($result)
或mysqli_fetch_assoc()
函数。
像这样:
$row = mysql_fetch_array($result);
并根据需要使用$row
数组。
答案 2 :(得分:2)
mysqli:query()
返回一个mysqli_result
对象,该对象无法序列化为字符串。
您需要从对象获取结果。这是这样做的方法。
从结果中提取一行,然后访问列索引0或使用关联键。如果结果中没有行,请使用null-coalescing运算符。
$result = $con->query($tourquery); // or mysqli_query($con, $tourquery);
$tourresult = $result->fetch_array()[0] ?? '';
// OR
$tourresult = $result->fetch_array()['roomprice'] ?? '';
echo '<strong>Per room amount: </strong>'.$tourresult;
使用foreach
循环遍历结果,并逐个读取每一行。您可以使用列名作为数组索引来访问每一列。
$result = $con->query($tourquery); // or mysqli_query($con, $tourquery);
foreach($result as $row) {
echo '<strong>Per room amount: </strong>'.$row['roomprice'];
}
答案 3 :(得分:0)
尝试:
$row = mysqli_fetch_assoc($result);
echo "my result <a href='data/" . $row['classtype'] . ".php'>My account</a>";
答案 4 :(得分:-1)
确保mysqli_connect()
正在创建与DB的连接。您可以使用mysqli_errno()
检查错误。