【问题标题】:PHP MySQL Loop Not workingPHP MySQL循环不起作用
【发布时间】:2013-07-03 19:21:36
【问题描述】:

好的,所以我一直在尝试为我的推荐设置一个 for 循环,以便将其放入网站,但我无法让循​​环正常工作。

    <?php            
    $count = mysql_query("SELECT COUNT(*) cnt FROM testimonials");

    for ($i = 1; $i <= intval($count['cnt']); $i++)
    {
        $sql = mysql_query("SELECT * FROM 'testimonials' WHERE id='{$i}'");
        ?>
        <li class="span4">
            <div class="thumbnail thumbnail-1">
                <section> 
                    <a class="link-1" style="cursor:pointer;"><?php echo $sql['name']; ?></a>
                    <p><?php echo $sql['text']; ?></p>
                    <a href="http:// <?php echo $sql['product']; ?> /" class="link-1"><?php echo $sql['website']; ?></a>
                </section>
            </div>
        </li>

        <?php
        }

    ?>

所有数据库列名都正确。

top.php(包括在内)

require_once('/home/redjaxco/public_html/admin/owa_php.php');

$owa = new owa_php();
// Set the site id you want to track
$owa->setSiteId('4ca8477d56738edbe0eec3485abce08b');
$owa->trackPageView();

// Database connect
$db_host        = 'localhost';
$db_user        = 'redjaxco';
$db_pass        = '*******';
$db_database    = 'redjaxco_website'; 

$link = mysql_connect($db_host,$db_user,$db_pass) or die('Unable to establish a DB     connection');

mysql_select_db($db_database,$link);
mysql_query("SET names UTF8");


?>

【问题讨论】:

  • var_dump(intval($count['cnt'])) 最有可能返回0
  • “不工作”是什么意思?
  • 您没有对查询进行任何错误检查。你知道哪个不工作吗?你知道它为什么不工作吗?
  • 你不需要 mysql_fetch_array 吗?并且不要使用它已被弃用的 mysql_ 函数。
  • 另外值得注意的是,你从不调用 mysql_connect();你在你的代码中做到了,而不是在这里包含它吗?如果您不调用它,则 mysql_query 的行为就像 mysql_connect() 被调用时不带参数一样。主机、用户和密码的默认值为 'localhost:3306'、mysql.default_user 和 mysql.default_password。来源:php.net/manual/en/function.mysql-query.phpphp.net/manual/en/function.mysql-connect.php

标签: php mysql loops


【解决方案1】:

您需要从查询中获取一些数据:

 $q = mysql_query("SELECT COUNT(*) cnt FROM testimonials");
 $r = mysql_fetch_assoc($q);
 $count = $r['cnt'];

还有:

$q = mysql_query("SELECT * FROM 'testimonials' WHERE id='{$i}'");
while ($row=mysql_fetch_assoc($q)) {
  print_r($row);
}

编辑:

正如GGio提到的,考虑使用PDO,因为mysql_*命令是depreciated

【讨论】:

【解决方案2】:

你需要 mysql_fetch_assoc。但我建议您转而使用 PDOMySQLi,因为 MySql_* 已被弃用。

您的 $count 变量返回 0,因为您尝试将其转换为 int 但它包含一个对象。

所以你会做这样的事情:

   $data = mysql_fetch_assoc($count);
   for ($i = 1; $i < intval($data['cnt']); $i++) {
     ....
   }

【讨论】:

  • 好吧,这有点奏效,它现在显示了项目,但没有显示内容
  • $sql 变量没有得到值,有什么原因吗?
猜你喜欢
  • 2017-06-28
  • 1970-01-01
  • 1970-01-01
  • 2012-04-15
  • 2013-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多