我的网站上有一个数据表,我想添加搜索功能,这些功能可能基于名称,类型和日期等标准,因为表格中的数据与事件有关。
我需要在同一个表中过滤结果,但是我收到了这个错误:
捕获致命错误:类mysqli_result的对象无法转换为字符串
这是我的表格代码:
<?php
if(isset($_POST['searchbox']) && $_POST['searchbox'] !=""){
$search=preg_replace('#[^a-z 0-9?!]#i','',$_POST['searchbox']);
$user="admin";
$pass="neehahs";
$host="localhost";
$db_name="eventregisteration";
$con=mysqli_connect($host, $user, $pass, $db_name);
if(mysqli_connect_errno($con)){
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
if($_POST['select']=="type"){
$sqlcommand="SELECT * FROM eventform WHERE event_type LIKE '%$search%'";
}
elseif($_POST['select']=="name"){
$sqlcommand="SELECT * FROM eventform WHERE event_name LIKE '%$search%'";
}
$sqldata=mysqli_query($con,$sqlcommand)
or die("Error Getting Data");
$count=mysqli_num_rows($sqldata);
if($count>1){
while($row=mysqli_fetch_array($sqldata)){
echo "<tr align=center><td>";
echo $row['event_code'];
echo "</td><td>";
echo $row['event_name'];
echo "</td><td>";
echo $row['event_type'];
echo "</td><td>";
echo $row['event_level'];
echo "</td><td>";
echo $row['start_date'];
echo "</td><td>";
echo $row['end_date'];
echo "</td><td>";
echo $row['points'];
echo "</td><td>";
echo $row['pic'];
echo "</td><td>";
echo $row['video'];
echo "</td><td>";
echo $row['description'];
echo "</td></tr>";
}
}else{
$search_output="<hr/>0 Results for<strong>$sqldata</strong><hr/>$sqlcommand";
}
}
?>
答案 0 :(得分:1)
问题在于这一行:
$search_output="<hr/>0 Results for<strong>$sqldata</strong><hr/>$sqlcommand";
mysqli_query
会返回mysqli_result
个对象。连接到$search_output
时,PHP尝试将$sqldata
转换为字符串,这是根本无法完成的。这就是错误所指的内容。
考虑上下文(在邮件中并使用<strong>
标记封装),您可能使用的是$search
而不是$sqldata
。
我还考虑从该消息中删除$sqlcommand
,除非它是出于当前调试会话的目的,否则它会显示有关内部的重要信息,这些信息会暗示安全漏洞。