相关疑难解决方法(0)

在PHP和PostgreSQL中使用带间隔的命名占位符失败

好的,我已经确认可以在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)

postgresql pdo prepared-statement

5
推荐指数
1
解决办法
885
查看次数

如何将 INTERVAL 参数与 PDO 绑定?

我有一个查询,我试图完全从绑定参数设置,但现在我不得不从 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)

php mysql pdo

3
推荐指数
1
解决办法
1201
查看次数

PHP/PDO将当前日期加入MYSQL一个月

我正在尝试添加当前日期(不是时间,如果我有选项)以及一个月后的日期到我的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)

php mysql date insert

0
推荐指数
1
解决办法
4346
查看次数

标签 统计

mysql ×2

pdo ×2

php ×2

date ×1

insert ×1

postgresql ×1

prepared-statement ×1