所以,我在PHP(和一般的后端编程)总共n00b,但我从来没有决定建立一个功能强大的数据库,用户可以搜索客户端作为我的第一个网络的最终项目开发课。
无论如何,我在本地主机上创建了我的站点和数据库,虽然花了一段时间,但我完成了所有功能。然而,当我试图将它移动到我的webhost时,一切都开始破坏了,因为我以前不知道,webhost使用的是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>";
}
答案 0 :(得分:1)
不,仅当您使用mysqlnd library时,fetch_all
方法才可用。
可以为PHP 5.2编译mysqlnd(参见http://blog.ulf-wendel.de/2007/php-compiling-mysqlnd-with-php-525360/)但是如果您的Web托管服务提供商还没有准备升级到当前版本的PHP,我怀疑他们是否会安装mysqlnd对你而言。
您可以将代码转换为支持PDOStatement::fetchAll()的PDO。
或者您可以为mysqli编写自己的fetch_all
函数,这并不难:
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
答案 1 :(得分:0)
感谢您的回答。我肯定会搜索新的主机,但由于我的时间很短,我做了一个代码解决方法。你的后一种解决方案或多或少是我最终做的。我查询了每一行,然后使用以下代码将具有匹配条件的行添加到数组中:
$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);
}