Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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 如何在while循环中创建变量_Php_Mysql - Fatal编程技术网

Php 如何在while循环中创建变量

Php 如何在while循环中创建变量,php,mysql,Php,Mysql,这是我的php代码- <?php $dbhost = 'localhost'; $dbuser = 'root'; $dbpass = ''; $dbname = 'moviefone'; $con = mysql_connect($dbhost, $dbuser, $dbpass); mysql_select_db($dbname, $con); // Check connection if (mysqli_connect_errn

这是我的php代码-

<?php    
$dbhost = 'localhost';    
$dbuser = 'root';    
$dbpass = '';      
$dbname = 'moviefone';    

$con = mysql_connect($dbhost, $dbuser, $dbpass);  

mysql_select_db($dbname, $con);

// Check connection

if (mysqli_connect_errno())
{  
echo "Failed to connect to MySQL: " . mysqli_connect_error();    
}
$query = (isset($_GET['search-text']) ? strip_tags($_GET['search-text']) : '');

$num_result = 0;

$min_length = 3;

if(strlen($query) >= $min_length){ 

$query = htmlspecialchars($query);             
$query = mysql_real_escape_string($query);

$raw_results = mysql_query("SELECT * FROM movies WHERE (`title` LIKE '%".$query."%')")    or die(mysql_error());               

if(mysql_num_rows($raw_results) > 0){   
    while($results = mysql_fetch_assoc($raw_results)){
    $title=$results['title'];
    $images=$results['images'];
            $num_results++;
echo '<div id="search_result">
<a href=""><img src="'.$images.'" width="77px" height="111px" alt="" /></a>
<a href="" >'.$title.'</a>
<br />
<br />
</div>
<div id="b-1" class="clearfix"></div>
</div>';



    }

}
else{
    echo "No results";
}

}
else{ 
echo "Minimum length is ".$min_length;
}

?>   

您只是在计算所有结果的总数吗?如果是这样,则需要在循环之前将变量设置为零。您的代码当前正在每个循环中覆盖该变量

$num_result = 0;
。。。在您的例子中,每个循环只包含一条记录,所以这里不需要使用
+=
。该值始终为1,因此您可以按如下方式将计数器增加1:

$num_result++;
。。。最后,输出代码应该可以很好地工作。只要在代码中将
$num_result
设置为足够高的零(例如,在if语句之外),就不会出现未定义的错误。我认为这是因为if语句的计算结果不是true(您没有任何查询结果),因此变量没有得到定义

编辑

我将给你一个详细的例子,说明这应该如何工作:

<?php

$num_result = 0;
$query = // your query here

while($results = mysql_fetch_assoc($query)) {
    $num_result++;
    // output your table info here
}

echo 'Total results: ' . $num_result;

?>
然后使用mysql_num_rows()输出总数,而不是依赖于
$num_result


电影()

。。。我害怕不得不编写
mysql\u fetch\u assoc
——mysql函数已被弃用,请改用mysqli或PDO。我看到您已经在代码中使用了一两个mysqli函数,这相当令人困惑,但对您来说很好-转换其余的函数

当您在while子句中定义变量时,退出while循环时变量生存期结束(while之外没有变量)
所以,如果您想在while之外使用变量,但在while=>define variable before while子句中对其进行更改

当我
echo while循环内的“num\u result\n”
时,它显示良好。但当我尝试在循环外回显它时,它显示未定义的变量。ex-
movies(
然后它只显示未定义的变量:num\u result。顺便说一句,我已经尝试了你的解决方案,但仍然得到了错误。我要去假设你在你的示例中在
num\u result
前面添加了所需的
$
。。为了清楚起见,你能更新你的代码来显示这一点吗。我以前尝试过什么,也尝试过请注意:未定义的变量:num\u会导致第72行的C:\wamp\www\test\website3\search.php
@akash ok mate,够了。请发布整个代码,因为您所提供的代码中没有您想要的错误和输出。
<?php    
$dbhost = 'localhost';    
$dbuser = 'root';    
$dbpass = '';      
$dbname = 'moviefone';    

$con = mysql_connect($dbhost, $dbuser, $dbpass);  

mysql_select_db($dbname, $con);
$num_results = 0;

// Check connection

if (mysqli_connect_errno())
{  
echo "Failed to connect to MySQL: " . mysqli_connect_error();    
}
$query = (isset($_GET['search-text']) ? strip_tags($_GET['search-text']) : '');

$min_length = 3;

if(strlen($query) >= $min_length){

$query = htmlspecialchars($query);            
$query = mysql_real_escape_string($query);

$raw_results = mysql_query("SELECT * FROM movies WHERE (`title` LIKE '%".$query."%')")    or die(mysql_error());
<div class="query-result">
    <h2>Movies<span class="num_result">(<?php echo mysql_num_rows($raw_results)?>)</span?></h2>
</div>