$conn = mysqli_connect($dbhost, $dbuser, $dbpass,$Database);
$sql="Select from Tutorial_tbl where tutorial_title=".$tutorial_title;
$res=$conn->query($sql);
if($res->num_rows!=0){
while($row=$res->fetch_assoc()){
echo"<tr><td>".$row["tutorial_title"];#."</td><td>".$row["tutorial_author"]."</td><td>".$row["submission_date"]."</td></tr>";
}
}
$conn->close();
为什么我收到此错误?
尝试获取非对象的属性
答案 0 :(得分:1)
如果$tutorial_title
的值是一个字符串必须是''
,就像这个"SELECT * FROM Tutorial_tbl WHERE tutorial_title= '$tutorial_title'";
一样,你的查询错了,它不是{{ 1}}但SELECT FROM
,您的查询失败并且不构建对象,然后当您尝试访问SELECT * FROM
字段时,PHP会抛出异常。
答案 1 :(得分:0)
$tutorial_title
如果可信值(不是来自用户提交的值)且不能包含单引号,则应将其包装在单引号中。如果该值可能包含单引号或来自不安全的来源,则应使用带占位符和绑定变量的预处理语句。;#
仅会引起麻烦,将其删除。我推荐/未使用的代码:
if (!$conn = new mysqli($dbhost, $dbuser, $dbpass, $Database)) {
echo "connection error"; // $conn->connect_error;
} elseif (!$stmt = $conn->prepare("SELECT tutorial_title, tutorial_author, submission_date FROM Tutorial_tbl WHERE tutorial_title = ?")) {
echo "query syntax error"; // $conn->error;
} elseif (!$stmt->bind_param("s", $tutorial_title) || !$stmt->execute() || !$stmt->bind_result($title, $author, $date)) {
echo "statement error"; // $stmt->error;
} else {
echo "<table>";
echo "<tr><th>Title</th><th>Author</th><th>Date</th></tr>";
while ($stmt->fetch()) {
echo "<tr><td>$title</td><td>$author</td><td>$date</td></tr>";
}
echo "</table>";
$stmt->close(); // optional
$conn->close(); // optional
}
在上面的代码片段中,我在每一个地方都进行了虚假的条件检查,以启用简单的调试。我已注释掉错误函数,以便可以复制粘贴此代码。请注意,出于安全考虑,您绝不能向公众展示实际的错误消息。
当您确切知道要返回的列时,使用bind_result()非常方便-显示语法非常简洁。