试图获得非对象的属性

时间:2015-11-20 15:25:30

标签: php mysql database mysqli

我猜这个问题是重复但我不明白错误获取错误

错误当我搜索不在数据库中的任何内容时,例如当我搜索足球时,我会收到错误信息,但是当我搜索 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 这意味着什么剂量???

2 个答案:

答案 0 :(得分:2)

从我的评论中拉出来,并作为swidmann给出的另一个答案:

如果您正在寻找特定的字词,请不要使用LIKE运算符,但是现在使用WHERE col='x'然后使用num_rows()就足够了。

如果不需要LIKE,请不要使用它。在查询中传递foot时,LIKE适用于footingafootbigfootfoot等。

  • 根据%通配符的使用和位置,它可能会为您提供比您真正想要的更多结果。

在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()有助于识别此类错误。