【问题标题】:Query in mysql (phpadmin) works but not in PHPmysql (phpmyadmin) 中的查询有效,但在 PHP 中无效
【发布时间】:2016-01-29 21:30:09
【问题描述】:

我在尝试将自动生成的 PHP 代码从 MySQL 导入 PHP 时遇到问题。

服务器信息: MySQL 版本:服务器版本:5.6.25 PHP 版本:5.6.11

我的数据库由 3 个表组成,它们通过外键等连接在一起。

ansatt,计时器,prosjekt

这是我在 MySQL 中的查询:

SELECT ansatt.brukernavn, timer.bruker_id_fk, timer.dag,timer.timer, timer.overtid_50, timer.overtid_100, timer.km, prosjekt.prosjekt_navn FROM ansatt JOIN timer ON ansatt.brukerid = timer.bruker_id_fk JOIN prosjekt ON timer.prosjekt_id_fk = prosjekt.prosjekt_id WHERE ansatt.brukerid = 11 

这为我提供了以下successful result

任何当我在我的 .php 文件中使用以下生成的代码时

$sqlget = "SELECT ansatt.brukernavn, timer.bruker_id_fk, timer.dag, timer.timer, timer.overtid_50, timer.overtid_100, timer.km, prosjekt.prosjekt_navn\n"
    . "FROM ansatt\n"
    . "JOIN timer ON ansatt.brukerid = timer.bruker_id_fk\n"
    . "JOIN prosjekt ON timer.prosjekt_id_fk = prosjekt.prosjekt_id\n"
    . "WHERE ansatt.brukerid = 11";

    date_default_timezone_set("Europe/Oslo");

    $sqldata = mysqli_query($dbcon, $sqlget) or die ('kunne ikke hente info');
echo "<table>";
    echo "<tr><th>Dato</th><th>Prosjekt</th><th>Std. Arb.Timer</th><th>Overtid 50%</th><th>Overtid 100%</th><th>Km</th>";

    while($row = mysqli_fetch_array($sqldata, MYSQLI_ASSOC)) {
        echo "<tr><td>";
        echo $row['dag'];
        echo "</td><td>";
        echo $row['prosjekt_navn'];
        echo "</td><td>";
        echo $row['timer'];
        echo "</td><td>";
        echo $row['overtid_50'];
        echo "</td><td>";
        echo $row['overtid_100'];
        echo "</td><td>";
        echo $row['km'];
        echo "</td><td>";       
    }
    echo "</table>"

它将显示以下记录: working php 一切都很好,但是当我尝试使用以下查询更改 MySQL 中的日期格式时

SELECT ansatt.brukernavn, timer.bruker_id_fk, DATE_FORMAT(timer.dag,'%d-%m-%Y'), timer.timer, timer.overtid_50, timer.overtid_100, timer.km, prosjekt.prosjekt_navn FROM ansatt JOIN timer ON ansatt.brukerid = timer.bruker_id_fk JOIN prosjekt ON timer.prosjekt_id_fk = prosjekt.prosjekt_id WHERE ansatt.brukerid = 11 

一切都很好,并为我提供了成功的结果和格式化的日期 dd.mm.yyyy。当我在 PHPadmin 中单击生成 PHPcode 时,它​​会显示此代码:

$sqlget = "SELECT ansatt.brukernavn, timer.bruker_id_fk, DATE_FORMAT(timer.dag,\'%d-%m-%Y\'), timer.timer, timer.overtid_50, timer.overtid_100, timer.km, prosjekt.prosjekt_navn FROM ansatt JOIN timer ON ansatt.brukerid = timer.bruker_id_fk JOIN prosjekt ON timer.prosjekt_id_fk = prosjekt.prosjekt_id WHERE ansatt.brukerid = 11";

当我刷新网站时,它无法从

获取任何数据
$sqldata = mysqli_query($dbcon, $sqlget) or die ('kunne ikke hente info');

当我删除以下代码时

DATE_FORMAT(timer.dag,\'%d-%m-%Y\')

并替换为“timer.dag”,它将再次工作,默认显示 yyyy.mm.dd 中的日期。

我试图在论坛和网络上搜索答案,但我找不到解决此问题或指向正确方向的匹配答案

如果我的语法不是最好的,我很抱歉,如果之前已经回答过,我很抱歉。希望这里的人有答案,我可以为那些感兴趣并需要它的人提供一个db的副本。

【问题讨论】:

  • 删除那些\n再试一次
  • 用空格替换 \n。
  • 同时修复表格的输出以生成有效的html

标签: php mysql


【解决方案1】:

输出mysql错误

$sqldata = mysqli_query($dbcon, $sqlget) or die ('kunne ikke hente info. Error: ' . mysqli_error($dbcon));

字段timer.dag的类型是什么?

尝试为计算字段设置一个名称,如下所示:

... DATE_FORMAT(timer.dag, '%d-%m-%Y') AS dag, ...

【讨论】:

  • 在数据库中设置为“日期”字段
  • 不使用 / 我没有收到任何错误,结果显示但日期行为空
  • by DATE_FORMAT(timer.dag, '%d-%m-%Y') AS dag as youSuggestet 确实有效。现在它显示一切正确。感谢您的帮助
  • 不客气。但是您将错误的答案标记为正确的解决方案。
【解决方案2】:

在您的查询中

$sqlget = "SELECT ansatt.brukernavn, timer.bruker_id_fk, DATE_FORMAT(timer.dag,\'%d-%m-%Y\'), timer.timer, timer.overtid_50, timer.overtid_100, timer.km, prosjekt.prosjekt_navn FROM ansatt JOIN timer ON ansatt.brukerid = timer.bruker_id_fk JOIN prosjekt ON timer.prosjekt_id_fk = prosjekt.prosjekt_id WHERE ansatt.brukerid = 11";

DATE_FORMAT 中的简单引号不需要用\ 转义

试试这个:

$sqlget = "SELECT ansatt.brukernavn, timer.bruker_id_fk, DATE_FORMAT(timer.dag,'%d-%m-%Y'), timer.timer, timer.overtid_50, timer.overtid_100, timer.km, prosjekt.prosjekt_navn FROM ansatt JOIN timer ON ansatt.brukerid = timer.bruker_id_fk JOIN prosjekt ON timer.prosjekt_id_fk = prosjekt.prosjekt_id WHERE ansatt.brukerid = 11";

希望对你有帮助

【讨论】:

  • 尝试不使用 \ 并显示结果但日期为空
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-05
  • 1970-01-01
  • 2014-10-31
  • 1970-01-01
相关资源
最近更新 更多