我猜这个问题是重复但我不明白错误获取错误
错误当我搜索不在数据库中的任何内容时,例如当我搜索足球时,我会收到错误信息,但是当我搜索 plane 时,返回结果( plane 在数据库中)
这里是search.php
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "db";
$conn = new mysqli($servername, $username, $password, $dbname);
$searchTerm = $conn->real_escape_string($_POST['term']);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
else{
$sql = "SELECT user_st,username FROM users WHERE user_st LIKE '%'".$searchTerm."'%'";
$result = $conn->query($sql);
$count = $result->num_rows;
if($count){
echo "data found</br></br>";
while ($info = $result->fetch_assoc()) {
echo $info['user_st'];
echo "</br>";
}
}else{
echo "No info Founded";
}
}
$conn->close();
错误消息是 尝试在第21行的C:\ wamp \ www \ mysqli_login \ search.php中获取非对象的属性 error msg 这意味着什么剂量???
答案 0 :(得分:2)
从我的评论中拉出来,并作为swidmann给出的另一个答案:
如果您正在寻找特定的字词,请不要使用LIKE运算符,但是现在使用WHERE col='x'
然后使用num_rows()
就足够了。
如果不需要LIKE,请不要使用它。在查询中传递foot
时,LIKE适用于footing
,afoot
,bigfoot
,foot
等。
%
通配符的使用和位置,它可能会为您提供比您真正想要的更多结果。在LIKE运算符上查阅以下内容:
其他参考:
HTML stickler:
</br>
应为<br/>
或<br>
如果您查看HTML源代码(例如在Firefox中),您将看到以下红色代码:
结束标记&#34; br&#34;。
/
字符就是这样; &#34;结束&#34;标签
即:<p>Text</p>
开启和关闭&#34; p&#34;标签
最好有适当的HTML并避免任何通知。
W3验证器(HTML检查器)https://validator.w3.org/nu/#textarea
将返回:
Error: End tag br.
From line 11, column 1; to line 11, column 5
llo world↩</br>↩Hi↩</
使用时:
<!doctype html>
<head>
<title>test</title>
</head>
<body>
<p>
Hello world
</br>
Hi
</p>
</body>
</html>
答案 1 :(得分:1)
问题是您使用其他单引号打断查询。
您必须更改以下代码
'%'".$searchTerm."'%'
到此:
'%".$searchTerm."%'
^ ^
dropped the single quotes here (^)
有时候mysqli_error()
有助于识别此类错误。