mysql(phpadmin)中的查询有效,但不适用于PHP

时间:2016-01-29 12:12:27

标签: php mysql

尝试将自动生成的PHP代码从MySQL导入PHP时出现问题。

服务器信息: MySQL verson:Server-versjon: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,\&#39;%d-%m-%Y \&#39;)

并替换为&#34; timer.dag&#34;它将再次显示yyyy.mm.dd中的日期作为默认值。

我试图在论坛和网络上搜索一件衣服,我找不到能够解决这个问题或指向正确方向的匹配答案

对不起,如果我的语法不是最好的,对不起,如果这已经得到了回答。希望有人在这里有答案,我可以为那些有兴趣并需要它的人提供数据库的副本。

2 个答案:

答案 0 :(得分:0)

在您的查询中

$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";

我希望它能帮到你

答案 1 :(得分:0)

使用

输出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, ...