好的,我已经确认可以在PHP上正常使用。
$ php --version
PHP 5.6.16 (cli) (built: Dec 30 2015 15:09:50) (DEBUG)
<pdo version>
pdo_pgsql
PDO Driver for PostgreSQL enabled
PostgreSQL(libpq) Version 9.4.0
Module version 1.0.2
Revision $Id: fe003f8ab9041c47e97784d215c2488c4bda724d $
Run Code Online (Sandbox Code Playgroud)
我想使用PDO在PHP中重新创建以下SQL:
UPDATE relationships SET status = 4 WHERE created > NOW() - interval '2 seconds';
Run Code Online (Sandbox Code Playgroud)
该脚本正在工作:
<?php
$db = new PDO('pgsql:dbname=db;host=localhost;user=stevetauber');
$stmt = $db->prepare("UPDATE relationships SET status = 4 WHERE created > NOW() - interval '?'");
$stmt->execute(array("2 seconds"));
Run Code Online (Sandbox Code Playgroud)
这里是命名占位符:
<?php
$db = new PDO('pgsql:dbname=db;host=localhost;user=stevetauber');
$stmt = $db->prepare("UPDATE relationships SET …Run Code Online (Sandbox Code Playgroud) 我有一个查询,我试图完全从绑定参数设置,但现在我不得不从 GET 参数附加一个字符串(我真的不想这样做)。
这是我现在的解决方案:
$interval = !empty($_REQUEST['interval']) ? $_REQUEST['interval'] : '28 DAY';
$interval = str_replace('_', ' ', $interval);
$data = array(
':msisdn' => $_REQUEST['msisdn']
);
$sql = <<<SQL
SELECT
COUNT(*) AS `countup`
FROM
(
SELECT
utc.`id_user`
FROM
`user_to_cli` utc
WHERE
1=1
AND utc.`cli` = :msisdn
AND utc.`dts_start` > CURDATE() - INTERVAL $interval
) a
;
SQL;
Run Code Online (Sandbox Code Playgroud)
这工作正常,但是当我尝试将间隔更改为绑定参数时,如下所示:
$interval = !empty($_REQUEST['interval']) ? $_REQUEST['interval'] : '28 DAY';
$interval = str_replace('_', ' ', $interval);
$data = array(
':msisdn' => $_REQUEST['msisdn'],
':interval' => $interval …Run Code Online (Sandbox Code Playgroud) 我正在尝试添加当前日期(不是时间,如果我有选项)以及一个月后的日期到我的MYSQL数据库,我一直得到以下错误:
Parse error: syntax error, unexpected T_LNUMBER in *myfile* on line 45
Run Code Online (Sandbox Code Playgroud)
我插入数据的功能如下:
function add_zipcode($zip, $adminID, $email)
{
global $db;
$query = '
INSERT INTO zip_owners (zip, email, adminID, started, transferred, expires)
VALUES (:zip, :email, :adminID, :started, :transferred, :expires)';
try{
$statement = $db->prepare($query);
$statement->bindValue(':zip', $zip);
$statement->bindValue(':email', $email);
$statement->bindValue(':adminID', $adminID);
$statement->bindValue(':started', now());
$statement->bindValue(':transferred', now());
$statement->bindValue(':expires', DATE_ADD(now(), INTERVAL 1 MONTH));
$statement->execute();
$statement->closeCursor();
}
catch (PDOexception $e)
{
$error_message = $e->getMessage();
echo "<p>Database Error: $error_message </p>";
exit();
}
}
Run Code Online (Sandbox Code Playgroud)
问题是这一个问题:
$statement->bindValue(':expires', DATE_ADD(now(), INTERVAL …Run Code Online (Sandbox Code Playgroud)