准备好的语句在本地主机上工作,但不能在实时服务器上工作,无法获得输出 [重复]

Posted

技术标签:

【中文标题】准备好的语句在本地主机上工作,但不能在实时服务器上工作,无法获得输出 [重复]【英文标题】:Prepared statements work on localhost but not on a live server, cannot get an output [duplicate] 【发布时间】:2021-12-29 15:35:40 【问题描述】:

我曾经制作 $sql 并在没有控制的情况下直接执行它,现在我正在切换到准备好的语句,我已经在我的本地主机上制作了一个,但是当我在实时服务器上尝试它的那一刻。 这是以前的样子

<?php 
                    $sql = "SELECT * FROM tbl_front WHERE active='Yes'";
                    $res = mysqli_query($conn, $sql);
                    if($res==TRUE)
                    
                        $count = mysqli_num_rows($res); 
                        if($count>0)
                        
                            while($row=mysqli_fetch_assoc($res))
                            
                                $day1=$row['day1'];
                                $day2=$row['day2'];
                                $time1=$row['time1'];
                                $time2=$row['time2'];
                                
                   echo "
                   <h2 class='hours'>RADNO VRIJEME:</h2>
                   <h2 class='hours'>$day1 - $day2 <br>$time1:00 - $time2:00</h2>";
                            
                        else
                        
                            echo "
                   <h2 class='hours'>Privremeno zatvoreno</h2>";
                        
                   ?>

效果很好,现在我已经把它改成了这个

           $sql = "SELECT * FROM tbl_front WHERE active=?";
                    $stmt = mysqli_stmt_init($conn);
                    if(!mysqli_stmt_prepare($stmt, $sql))
                        echo 'lol';
                    
                    else
                        mysqli_stmt_bind_param($stmt, "s", "Yes");
                        mysqli_stmt_execute($stmt);
                        $res = mysqli_stmt_get_result($stmt);
                        $count = mysqli_num_rows($res); 
                        if($count>0)
                        
                            while($row=mysqli_fetch_assoc($res))
                            
                                $day1=$row['day1'];
                                $day2=$row['day2'];
                                $time1=$row['time1'];
                                $time2=$row['time2'];
                    
                   echo "
                   <h2 class='hours'>RADNO VRIJEME:</h2>
                   <h2 class='hours'>$day1 - $day2 <br>$time1:00 - $time2:00</h2>";
                            
                        else
                        
                            echo "
                   <h2 class='hours'>Trenutno zatvoreno</h2>";
                        
                   ?>

我没有崩溃,但我无法获得输出,我尝试不使用 $count 或将其更改为 $count=mysqli_stmt_num_rows($res);,但我根本无法从数据库中提取数据,即使使用 print_r($res);关于如何解决这个问题的任何想法?

【问题讨论】:

我原以为对 mysqli_stmt_bind_param() 的调用会生成一些消息,因为您应该传入变量而不是常量。 @NigelRen - 假设他们已经调整了错误报告......无论如何我更喜欢 PDO 而不是 mysqli,这对我来说非常难看。 @ArtisticPhoenix 有人喜欢 mysqli 吗?我认为使用它的所有问题都只是复制/粘贴 10 年前的教程。 【参考方案1】:

为了从 mysqli 获得更详细的输出,您可以在建立连接之前将其添加到您的代码中 ($conn)。

   mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

这将向错误日志报告比默认设置更详细的错误,并在实时服务器上显示导致错误的原因。

【讨论】:

以上是关于准备好的语句在本地主机上工作,但不能在实时服务器上工作,无法获得输出 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

无法打开流:没有这样的文件或目录,但目录存在。在本地主机上工作但不在实时站点上工作[重复]

Google 广告显示在本地主机上,但不在实时网络服务器上

Laravel 5.2 session flash 在本地主机上工作但在服务器上不工作?

图片上传可以在本地主机上工作,但不能在线

laravel 中的护照详细信息 api 在本地主机上可以正常工作,但不能在共享主机上运行

从/向 XML 文件编辑文本:它可以在本地主机上工作,但不能在互联网上工作? (php, xml)