繁体   English   中英

Slim Framework-来自JSON的多个PDO更新

[英]Slim Framework - Multiple PDO updates from json

我试图使用Slim框架在json put请求中进行多次插入,但出现一个奇怪的错误:

SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect DOUBLE value: 'Chester'

即使Name是VARCHAR。 它在$ sth-> execute行上出错。 如果我只使用一个条目,它有时会起作用。 这是JSON

[{"id":"2240","name":"Cheats","breed": "Maltys"},
{"id":"2241","name":"Chester","breed":"Poodlexx"}]

码:

$app->put('/test2', function ($request, $response, $args) {
    $parsedBody = $request->getParsedBody();
    print_r ($parsedBody);
    foreach ($parsedBody as $key => &$value) {
        if (!isset($value['id'])) { continue; }
        $sql = "UPDATE pets p SET";
        foreach ($value as $p_key => &$p_value) {
            if ($p_key !== 'id') { //ignore the id
                $sql .= " $p_key = :$p_key AND";
            }
        }
        $sql = preg_replace('/AND$/', '', $sql)." WHERE p.id = :id";
        //echo "\n$sql";
        $sth = $this->db->prepare($sql);
        foreach ($value as $p_key => &$p_value) {
            //echo "\n$p_key:$p_value";
            $sth->bindParam($p_key, $p_value);
        }
        $sth->debugDumpParams();
        $sth->execute();
    }
    return;
});

DumpParams的输出:

SQL: [67] UPDATE pets p SET name = :name AND breed = :breed  WHERE p.id = :id

Doh,在敲打我的头两个小时之后,这是一条错误的SQL语句,应该是逗号而不是AND:

 foreach ($value as $p_key => &$p_value) {
            if ($p_key !== 'id') { //ignore the id
                $sql .= " $p_key = :$p_key,";
            }
        }
        $sql = preg_replace('/,$/', '', $sql)." WHERE p.id = :id";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM