【问题标题】:Switching from MySQL to MYSQLi - loop not working从 MySQL 切换到 MYSQLi - 循环不起作用
【发布时间】:2013-11-19 10:58:02
【问题描述】:

我正在将我的网站从使用 mysql 更改为 mysqli。到目前为止,更改非常简单,但我有一个带有 for 循环的日历页面,在切换后它不起作用。我很确定这是导致错误的循环,但我似乎找不到修复方法。

这是代码的选择,它适用于 mysql_query(我已注释掉)但不适用于 mysqli->query

<?php include("conn.php");

$today = mktime(12,0,0,date("m"),1,date("Y"));
$currentmonth = date(m, $today);
$currentyear = date(Y, $today);
$prevmonth = $currentmonth - 1;
$prevyear = $currentyear;
$prevdate = mktime(12, 0, 0, $prevmonth, 1, $prevyear);
$pdim = date("t", $prevdate);

function showMonth($month, $year, $pdims, $prevmonths, $prevyears)
{
$caldate = mktime(12, 0, 0, $month, 1, $year);
$offset = date("w", $caldate);
$pdimsplus = $pdims + 1;
$enddays = $pdimsplus - $offset;

for($i = 1; $i <= $offset; $i++)
{   
$qryhead1 = "SELECT * FROM photos WHERE day(date) = $enddays AND month(date) = $prevmonths AND year(date) = $prevyears LIMIT 1";

//$res1 = $mysqli->query($qryhead1);
//$noofrec1 = $res1->num_rows;
//if ($noofrec1 > 0) {    
//while ($row1 = mysqli_fetch_object($res1)) {

$res1 = mysql_query($qryhead1);
$noofrec1 = mysql_num_rows($res1); 
if ($noofrec1 > 0) {
while ($row1 = mysql_fetch_object ($res1)) {
    $id = $row1->id;
    $image = $row1->image; ?>
    <div><?php print("$enddays"); ?><a href="<?php print("$id"); ?>"><img src="/images/<?php print("$image"); ?>"></a></div>
    <?php } 
    } else { ?>
    <div><?php print("$enddays"); ?></div>
    <?php }
    $enddays++;
    }
}
?>

<div>
<?php showMonth($currentmonth, $currentyear, $pdim, $prevmonth, $prevyear); ?>
</div>

【问题讨论】:

  • 获取数组,然后尝试foreach。
  • 在 include("conn.php");你创建了一个 mysqli 对象吗?
  • 您是否更改了在包含文件中建立的连接?如果mysql_query 仍在工作,您可能没有使用mysqli_* 进行连接
  • 多调试一点总是好的。例如,在 $row1 上执行 var_dump 以查看你得到了什么。调试解决了很多问题!
  • 为什么你使用mysqli_fetch_object(程序接口的一部分)而你的其余代码似乎使用对象接口?

标签: php mysql mysqli


【解决方案1】:

如果您有一个$mysqli 对象(我假设您在 conn.php 中创建了一个对象),您不会将它作为自定义函数showMonth() 的函数参数传递。阅读variable scope

【讨论】:

  • 就是这样——我将我的 $mysqli 添加到我的 showMonth() 函数中,它现在可以工作了——如果没有你的指针,我想我不会明白这一点,所以谢谢。后续问题,为什么在 mysqli 中需要这样做,但在没有 mysql 的情况下它可以工作?
  • @timsnell mysql_query 是一个内置的 PHP 函数,而 $mysqli 是您创建的自定义对象。
猜你喜欢
  • 2014-08-18
  • 2017-11-22
  • 2020-03-25
  • 2015-12-03
  • 1970-01-01
  • 2013-07-17
  • 1970-01-01
  • 2011-09-28
  • 1970-01-01
相关资源
最近更新 更多