Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php-foreach中的错误_Php_Foreach - Fatal编程技术网

php-foreach中的错误

php-foreach中的错误,php,foreach,Php,Foreach,我得到的错误是警告:为foreach提供的参数无效,我已经阅读了foreach案例的相关帖子,但我仍然不知道如何修复它。我能知道引起此警告的原因和修复方法吗 这是我的密码 mysql_connect("localhost","psm","psm") or die("could not connect"); mysql_select_db("planner") or die ("could not find db!"); $output = ''; //collect if(isset($_PO

我得到的错误是警告:为foreach提供的参数无效,我已经阅读了foreach案例的相关帖子,但我仍然不知道如何修复它。我能知道引起此警告的原因和修复方法吗

这是我的密码

mysql_connect("localhost","psm","psm") or die("could not connect");
mysql_select_db("planner") or die ("could not find db!");

$output = '';
//collect
if(isset($_POST['search']))
{
    $searchq =$_POST['search'];
    $searchq = preg_replace("#[^0-9a-z]#i","",$searchq);
    $query = mysql_query("select c.*,u.username from login_user u left join calendar c on c.user_id = u.user_id where u.matrix LIKE '{$searchq}'" ) or die ("could not search");
    $count = mysql_num_rows($query);
    if ($count == 0){ 
    $output = 'There are no search result!';
    } else {
    while($row = mysql_fetch_array($query)){
         $searchq = [];
         $searchq[] = $row; 
        }
}
}
    foreach($searchq as $u) {
?>
        <div class="well" align="left" width="65%" >
        <fieldset>
        <table>
            <tr><th>Matrix No:
            <?php echo $query['matrix']; ?>
            <?php foreach($query as $c){
                    if($c['user_id'] == $u['user_id']){
                        if($c['cate'] == 0){
                            echo "<p style='background: red;'>Course Name : ";
                        }else{
                            echo "<p>Title : ";
                        }
            ?>
                    <?php echo $c['title']; ?></p>
                    <p>Description :<?php echo $c['description'];?></p>
                    <p>Location : <?php echo $c['location'];?></p>
                    <p>Start Time : <?php echo date('Y-m-d',$c['starttime']);?></p>
                    <p>End Time : <?php if($c['endtime'] != 0)echo date('Y-m-d',$c['endtime']);?></p>
            <?php }}?>
        </th></tr>
        </table>
        </div>

<?php    
    }
?>

好吧,你这里有很多问题

首先,不要使用mysql函数,因为它们从PHP5.5开始就被弃用,并在7.0中被删除。改为使用mysqli_u函数或PDO

其次,如果您在$\u POST['search']中没有任何内容,那么$searchq永远不会初始化,您的foreach循环也没有任何内容

第二个半月,如果您确实传入了$_POST['search'],但未找到任何结果,则$searchq是一个字符串,因此当它进入foreach循环时,foreach无法使用它。老实说,您的变量不应该像这样执行双重任务,即在preg_replace中将$searchq作为字符串,然后在有搜索结果的情况下将其用作数组

第三,当您使用mysqli_查询时,它需要两个参数。这叫做使用

$results = mysqli_query($connection, $statement);
第四,在while循环的每个过程中都重新初始化$searchq

因此,您可能实际上没有得到任何结果,因此您的while循环可能永远不会做任何事情,因此,$searchq不是一个可以通过foreach循环的数组

您需要做的是在查询之前初始化$searchq,这样您就有了一个空数组,这样当您开始使用foreach时,您至少有一个空数组

基本上,在你的前额之上,你应该

if( !empty($searchq) && is_array($searchq))
{
    foreach(...)
}

或者在while循环之后将foreach移动到else语句中。

首先,如果我期望的是表单未提交,则不定义$searchq。其次,如果已提交,但没有行,$searchq是字符串而不是数组。第三,你循环你的结果,但是当你在每次迭代中将$searchq重置为一个空数组时,你只会得到一个结果。。。。关于这个问题,没有争吵。。可以更具体一些吗?例如,如果$count==0{如果返回true。修复了它。mysqli_查询需要两个参数。您为mysqli修复了它,但OP没有使用mysqli,即使它们应该使用,所以在我看来仍然不正确。谢谢,我将修复mysqli,然后尝试您所说的: