【问题标题】:Variable into MySQL statement is not workingMySQL 语句中的变量不起作用
【发布时间】:2012-12-07 21:42:49
【问题描述】:

我有一个数组,列出了设定日期(2 周支付期)的 14 个日期:

$punchCard = array();    
Array(
        [1] => Array(
                [showDate] => 2012-12-04
                [codeDate] => 20121204)
        [2] => Array(
                [showDate] => 2012-12-05
                [codeDate] => 20121205)
    .........................................
        [12] => Array(
                [showDate] => 2012-12-15
                [codeDate] => 20121215)
        [13] => Array(
                [showDate] => 2012-12-16
                [codeDate] => 20121216)
        [14] => Array(
                [showDate] => 2012-12-17
                [codeDate] => 20121217)
    )

我想遍历它并从数据库中返回一些数据:

    foreach($punchCard as $date){
        $sql = "
              SELECT date, time 
              FROM `timeclock` 
              WHERE `employee`=" . $_SESSION['id'] . " 
              AND `date`=" . (int)$date['codeDate'] . " 
              ORDER BY `time` ASC ";
        $result = mysql_query($sql);
        $timecard = array();
        while($row = mysql_fetch_assoc($result)){
            $timecard[] = $row;
        }   
    }

这不起作用,但是:

$sql = "
     SELECT date, time 
     FROM `timeclock` 
     WHERE `employee`=" . $_SESSION['id'] . " 
     AND `date`=20121204 
     ORDER BY `time` ASC ";

不知何故 (int)$date['codeDate'] 不起作用,但我无法理解它,它可能很简单......

泰勒

【问题讨论】:

  • 什么样的日期字段使用整数?为什么不试试echo $sql; 看看它是什么样子的?
  • $punchCard[0]['codeDate'] = date("Ymd", strtotime("+0 day", $start));
  • $sql 看起来相同但没有数组
  • 您的表中的date 数据类型是什么?另外,在mysql_query 之后添加or die(mysql_error());
  • dateint(8) 并且 $result = mysql_query($sql) or die(mysql_error()); 没有错误

标签: php mysql arrays multidimensional-array


【解决方案1】:

您的 SQL 有错误。 datetimeSELECT 之后应该这样引用,因为它们是函数名:

$sql = "
 SELECT `date`, `time` 
 FROM `timeclock` 
 WHERE `employee`=" . $_SESSION['id'] . " 
 AND `date`=20121204 
 ORDER BY `time` ASC ";

【讨论】:

  • 这确实给了我任何不同的结果......我正在尝试解决这个问题:` AND date='" . (int)$date['codeDate'] . "'跨度>
【解决方案2】:

SQL 语句是正确的。数组不是:

while($row = mysql_fetch_assoc($result)){//show last punch
        $timecard[]['time'] = $row['time'];
    }

固定

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-16
    • 1970-01-01
    • 2018-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多