Php 如何在while循环中创建变量
这是我的php代码-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
$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>