10789


phpでREST APIを作成したのですが、GETとDELETEはできるのですが、POSTができずに以下のエラーが出てしまいます。

_エラー_

[code]

    <br />
    <b>Warning</b>:  PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: no parameters were bound in <b>/Users/user_name/php_workspace/sandbox/inquery.php</b> on line <b>13</b><br />
    
[/code]

コードは以下のとおりです。

_コード_

[code]

      1 <?php
      2 header("Content-Type: application/json; charset=UTF-8");
      3 header("X-Content-Type-Option: nosniff");
      4 $pdo = new PDO('mysql:dbname=hoge', 'hoge', 'hoge');
      5 switch($_SERVER['REQUEST_METHOD']){
      6   case 'GET':
      7     $st = $pdo->query("SELECT * FROM inquery");
      8     echo json_encode($st->fetchAll(PDO::FETCH_ASSOC));
      9     break;
     10   case 'POST':
     11     $in = json_decode(file_get_contents('php://input'), true);
     12     $st = $pdo->prepare("INSERT INTO inquery(title,body) VALUES(:title,:body)");
     13     $st->execute($in);
     14     break;
     15   case 'DELETE':
     16     $st = $pdo->prepare("DELETE FROM inquery WHERE id=?");
     17     $st->execute([$_GET['id']]);
     18     break;
     19 }
    
[/code]

モデルは以下のとおりです。

[code]

    id(int) primary key
    title(varchar)
    body(text)
    timestamp(timestamp)
    
[/code]

どこが間違っているか教えていただけると幸いです。


CC BY-SA 3.0
2015-05-30T04:49:34.853
10788
2015-05-30T04:59:42.593
7232
question
php api rest
phpでREST API作成


RESTというよりはPDOの問題で、

[code]

    $st->execute($in);
    
[/code]

の`$in`が正しい形式の配列になっていないのだと思います。  
`$in`の中身が分かりませんが、以下のような連想配列でパラメーターを渡してください。

[code]

    $st->execute(array(':title' => $in['title'], ':body' => $in['body']));
    
[/code]


CC BY-SA 3.0
2015-05-30T04:59:42.593
10789
2015-05-30T04:59:42.593
5750
10788
answer