gpt4 book ai didi

php - 尝试获取非对象的属性/调用 bool 值上的成员函数bind_param()

转载 作者:行者123 更新时间:2023-11-29 10:39:14 25 4
gpt4 key购买 nike

我知道这个问题已被问过很多次,但解决方案似乎对我不起作用。

我正在写一个简单的博客,我想创建一个存档部分,但我卡住了。这是我的一段代码,很麻烦:

            $month = $_GET['month'];
$year = $_GET['year'];

$from = date('Y-m-01 00:00:00', strtotime("$year-$month"));
$to = date('Y-m-31 23:59:59', strtotime("$year-$month"));

echo $from;
echo $to;

$sql = "SELECT * FROM posts WHERE date >= ".$from." AND date <= ".$to." ORDER BY date DESC";
$stmt = $conn->query($sql);
var_dump($stmt);

if($stmt->num_rows > 0){
while($row = $stmt->fetch_assoc()){

这段代码在 if 语句中给了我以下错误(尝试获取非对象的属性)。 var_dump() 返回 bool(false)。所以看起来查询是有问题的,但就我而言是没问题的。我查了一下,没有错别字,所有的名字也都是正确的。

我也尝试这样做:

            $month = $_GET['month'];
$year = $_GET['year'];

$from = date('Y-m-01 00:00:00', strtotime("$year-$month"));
$to = date('Y-m-31 23:59:59', strtotime("$year-$month"));

echo $from;
echo $to;

$sql = "SELECT * FROM posts WHERE date >= ".$from." AND date <= ".$to." ORDER BY date DESC";
$stmt = $conn->prepare($sql);
var_dump($stmt);
$stmt->bind_param('ii', $from, $to);
$stmt->execute();

但是它给了我一个不同的错误(调用 bool 值上的成员函数bind_param()),所以再次看来查询是一个问题。我真的不知道该如何处理这个问题。有什么建议吗?

更新:

                $month = $_GET['month'];
$year = $_GET['year'];

//set from and to dates
$from = date('Y-m-01 00:00:00', strtotime("$year-$month"));
$to = date('Y-m-31 23:59:59', strtotime("$year-$month"));

echo $from;
echo $to;

$sql = "SELECT * FROM posts WHERE date >= ? AND date <= ? ORDER BY date DESC";
$stmt = $conn->prepare($sql);
//var_dump($stmt);
$stmt->bind_param('ii', $from, $to);
$stmt->execute();

if($stmt->num_rows > 0){
while($row = $stmt->fetch_assoc()){
$query = "SELECT * FROM comments WHERE postId=".$row['id'];
$comNumber = $conn->query($query);
$total = $comNumber->num_rows;


echo "<section class='post'>
<img class='postImage' src='img/".$row['id'].".png'>
<div class='postComment'>
<div class='postCommentBubble'><img src='img/commentBubble.svg'></div>
<div class='postCommentCount'>".$total." comments</div>";

echo "<div class='postDate'>".date("d F Y G:i", strtotime($row["date"]))."</div>";

if(isset($_SESSION['user']) && $_SESSION['privileges']==true){
echo "<a class='postDelete' href='delete-post.php?id=".$row["id"]."'><img src='img/garbage.svg'></a>";
echo "<a class='postEdit' href='edit-post.php?id=".$row["id"]."'><img src='img/pencil.svg'></a>";
}

echo "</div>
<header class='postTitle'><a href='post.php?id=".$row['id']."'>".$row['title']."</a></header>
<div class='postIntro'>".$row['intro']."</div>
<div class='postLinkContainer'><a class='postLink' href='post.php?id=".$row['id']."'>read more</a></div>
</section>
";
}
}

最佳答案

请阅读此处:http://php.net/manual/en/mysqli.prepare.php准备好,如果失败,你会得到一个错误。因此你的错误。

问题是您的 SQL 需要使用 ? 代替变量名称,并且准备需要绑定(bind)数据。我相信你想要:

$sql = "SELECT * FROM posts WHERE date >= ? AND date <= ? ORDER BY date DESC";
$stmt->bind_param('ii', $from, $to);

关于php - 尝试获取非对象的属性/调用 bool 值上的成员函数bind_param(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45838016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com