是否有一个功能等价PHP 5.2 mysqli_fetch_all?(Is there a func

2019-10-20 17:43发布

所以,我在PHP中的总的n00b(和后端的编程一般),但我从来不认为我想建立一个有效的数据库,用户可以搜索客户端作为个我的第一个Web开发级决赛项目。

无论如何,我做了一个本地主机我的网站和数据库,虽然过了好一会儿,我把一切都完全正常。 当我试图将其移动到我的虚拟主机提供商,但是,一切都开始断裂了,因为,以前不知道的我来说,虚拟主机提供商使用PHP 5.2。 我已经能够操纵一切可疑的安全(我知道,我知道,但我绝望了,而且也只在这里假数据无论如何)的一些功能的解决方案,但有一件事我不能找到一个解决为是mysqli_fetch_all()。 我接到一个电话未定义功能mysqli_fetch_all()错误。

我用它为我的搜索功能:当您搜索用户时,该功能将所有匹配信息的行,并把它在一个阵列,并在最后,所有的结果阵列合并成一个数组,它是回来。 我就是这么做的,这样是没有输入搜索条件将被忽略,而不是返回一个错误(NULL一直是我的存在,这整个项目的祸根)。

该网站可浏览http://webinfofinal.webatu.com/profiles.html所以你看到的我的工作和代码如下。 有什么建议么? 我试过其他抓取功能,但它们只返回第一个匹配行。

        if ($firstName != null){
            $result2 = mysqli_query($con, "SELECT  displayName , firstName , lastName , eMail , age , classification , major , faveAnimes  FROM a2097702_fac.members where firstName =  '$firstName' ");
            $query2 = mysqli_fetch_all($result2,MYSQLI_ASSOC);
            $search = array_merge_recursive($search, $query2);
        }
        if ($lastName != null){
            $result3 = mysqli_query($con, "SELECT  displayName , firstName , lastName , eMail , age , classification , major , faveAnimes  FROM a2097702_fac.members where lastName =  '$lastName' ");
            $query3 = mysqli_fetch_all($result3,MYSQLI_ASSOC);
            $search = array_merge_recursive($search, $query3);
        }
        if ($eMail != null){
            $result4 = mysqli_query($con, "SELECT  displayName , firstName , lastName , eMail , age , classification , major , faveAnimes  FROM a2097702_fac.members where eMail =  '$eMail' ");
            $query4 = mysqli_fetch_all($result4,MYSQLI_ASSOC);
            $search = array_merge_recursive($search, $query4);
        }
        if ($age != null){
            $result5 = mysqli_query($con, "SELECT  displayName , firstName , lastName , eMail , age , classification , major , faveAnimes  FROM a2097702_fac.members where age =  '$age' ");
            $query5 = mysqli_fetch_all($result5,MYSQLI_ASSOC);
            $search = array_merge_recursive($search, $query5);
        }
        if ($classification != null){
            $result6 = mysqli_query($con, "SELECT  displayName , firstName , lastName , eMail , age , classification , major , faveAnimes  FROM a2097702_fac.members where classification =  '$classification' ");
            $query6 = mysqli_fetch_all($result6,MYSQLI_ASSOC);
            $search = array_merge_recursive($search, $query6);
        }
        if ($major != null){
            $result7 = mysqli_query($con, "SELECT  displayName , firstName , lastName , eMail , age , classification , major , faveAnimes  FROM a2097702_fac.members where major =  '$major' ");
            $query7 = mysqli_fetch_all($result7,MYSQLI_ASSOC);
            $search = array_merge_recursive($search, $query7);
        }           
        if ($faveAnimes != null){
            $result8 = mysqli_query($con, "SELECT  displayName , firstName , lastName , eMail , age , classification , major , faveAnimes  FROM a2097702_fac.members where faveAnimes =  '$faveAnimes' ");
            $query8 = mysqli_fetch_all($result8,MYSQLI_ASSOC);
            $search = array_merge_recursive($search, $query8);
        }

        if ($search != null){
            echo "<html>";
            echo "<head>";
            echo"<title> Anime Club Search Results | Web Info Final Project </title>";
            echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"webinfofinal.css\">";
            echo "</head>";
            echo "<div class=\"content\" style=\"width:50%; margin-left:-20%;\">";
                echo "<div class=\"header\">";
                    echo "<p></p><p>Your search results are below. </p>";
                echo "</div>";
                echo "<pre>";
                    print_r($search);
                echo "</pre>";
                echo "<p>End of results. <a href=\"profiles.html\">Search again?</a></p>";
                echo "<a href=\"login.html\"><input type='button' value='Update My Profile' id='updateProfile'></a>";
                echo "<a href=\"logout.php\"><input type='button' value='Log Out' id='logout'></a>";
            echo "</div>";
            echo "</html>";
        }

Answer 1:

不, fetch_all方法仅当您使用mysqlnd库 。

它可以编译为mysqlnd PHP 5.2(见http://blog.ulf-wendel.de/2007/php-compiling-mysqlnd-with-php-525360/ ),但如果您的网站托管服务提供商是不准备升级到PHP的当前版本,我怀疑他们会为您安装mysqlnd。

您可以将您的代码PDO,支持PDOStatement对象::使用fetchall() 。

或者,您可以编写自己的fetch_all为mysqli的功能,这是不是很困难:

function fetch_all($result)
{
   $rows = array(); -- old array syntax still needed in PHP 5.2
   while ($row = $result->fetch_assoc())
          $rows[] = $row;

   return $rows;
}

我建议你找一个不同的虚拟主机。 PHP 5.2正式结束生命,并有可能被固定在以后的PHP版本的安全漏洞,但不是在5.2。 见http://php.net/eol.php



Answer 2:

谢谢您的回答。 我肯定会寻找新的论坛主持人,但因为我是在很短的时间,我做了一个代码的解决方法做。 你的后一种解决方案是多了还是少了什么我落得这样做。 我查询的每一行,然后添加与使用此代码匹配标准以阵列的那些:

$result1 = mysql_query("SELECT  displayName , firstName , lastName , eMail , age , classification , major , faveAnimes  FROM a2097702_fac.members ".$parameterString);
            while ($row = mysql_fetch_array($result1, MYSQL_ASSOC)){
                array_push($results, $row);
            }


文章来源: Is there a functional equivalent to mysqli_fetch_all in PHP 5.2?