【问题标题】:How to convert time to string in php如何在php中将时间转换为字符串
【发布时间】:2018-02-27 05:34:43
【问题描述】:

我有一个 php foreach 循环,它从不同的数据库中获取数据并将其插入到我的另一个数据库表中。我的问题是当我运行此代码时,我的时间列中出现错误。也许是因为我必须将时间转换为字符串,因为我的表格除了时间列中的文本。

我的错误代码:

SQLSTATE[42601]: Syntax error: 7 ERROR:  syntax error at or near "22"
SELECT 897196,2018-02-26 22:20:09,1...
                         ^ - error

所以,我将字符串从时间变量中放入,但仍然是同样的错误。虽然说实话我不确定这个问题。

我的 PHP 代码

foreach($results as $n){

$id = $n['ID'];
$time = (string)$n['Time']=='0000-00-00 00:00:00'?null:(string)$n['Time'];
$email= $n['email'];
$marks= $n['marks'];
$rank= $n['rank'];


$psql->get_db()->beginTransaction();


    $stmt = $psql->pdo_prepared("INSERT INTO student(
        id, time,email, marks, rank) SELECT $id,$time, $email,$marks,$rank FROM student WHERE NOT EXISTS (SELECT 1 FROM student WHERE id = $id AND time = $time AND email= $email AND marks = $marks AND rank= $rank)");

$psql->get_db()->commit();
}

在此先感谢您;

【问题讨论】:

  • 加上引号'时间'
  • 现在它在引号上给出错误:语法错误:7 错误:在“时间”或附近出现语法错误
  • 请使用双引号,因为您之前使用过单引号
  • 但是我的插入语句有双引号?
  • 你的意思是这样的 $stmt = $psql->pdo_prepared("INSERT INTO student(id, "time",email, Marks, rank) SELECT

标签: php postgresql psql


【解决方案1】:

请更改此行

$time = (string)$n['Time']=='0000-00-00 00:00:00'?null:(string)$n['Time'];

到这里

$time = (string)$n['Time']=='0000-00-00 00:00:00'  ? null : '"'.(string)$n['Time'] .'"';

【讨论】:

  • 在您的代码中,时间值将像这样设置2018-02-26 22:20:09 此值中的可用空间会产生该错误。在 mysql 操作中,字符串值必须用 '" 引号括起来。在我的代码中,时间值将设置如下:"2018-02-26 22:20:09"
  • 哦,好的,但我还有一个问题,如果我在 php 变量中有一个 html 元素,我们如何将它们转换为字符串。使用您的方法,由于 HTML 元素将具有 id="xyz" 或样式:'',因此接缝很困难。该怎么做?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-16
  • 1970-01-01
  • 2011-06-18
  • 1970-01-01
  • 2018-03-29
  • 2012-05-21
相关资源
最近更新 更多