1
PDOバインディングパラメータに問題があります。スリムフレームワークPDO PGSQL、バインディングパラメータなし
設定は次のとおりです。
私は私にアクセスするためにPDOを使用することを選択したUbuntuのデスクトップ16.04 はNetbeans 8.1(PHPとHTML版のみ) PHPのCLI 7.0.4(内部Webサーバを実行している) PostgresのSQL 9.5 スリムフレームワーク3
データベース。これは私の将来のプロジェクトのためのシステムを学ぶことです。
私はテーブルからすべてのレコードをつかむことができます、私は引数をスクリーンにエコーするために発行されます。
ただし、GETメソッドを使用して特定のエントリを特定すると、次のエラーが表示されます。
{"error":{"text":SQLSTATE[08P01]: <>: 7 ERROR: bind message supplies 0 parameters, but prepared statement "pdo_stmt_00000001" requires 1}}
以下は私のコードです。
をdb.php
<?php
function getDB() {
$dbtype="pgsql";
$dbhost="localhost";
$dbuser="postgres";
$dbpass="SomeSecurePassword";
$dbname="bms";
$dbConnection = new PDO("$dbtype:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
$dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $dbConnection;
}
?>
のindex.php
<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
require 'vendor/autoload.php';
require 'db.php';
$app = new \Slim\App;
$app->get('/','getRoot');
$app->get('/contacts', 'getContacts');
$app->get('/contacts/{contact_id}', 'getContact');
$app->run();
function getRoot() {
echo 'This is the Root URI';
}
function getContacts() {
$sql = "SELECT last_name,first_name FROM contacts ORDER BY last_name DESC";
try {
$db = getDB();
$stmt = $db->query($sql);
$contacts = $stmt->fetchAll(PDO::FETCH_OBJ);
$db = null;
echo '{"Contacts": ' . json_encode($contacts) . '}';
} catch(PDOException $e) {
echo '{"error":{"text":'. $e->getMessage() .'}}';
}
}
function getContact(Request $request, Response $response, $args) {
$contact_id = (int)$args['contact_id'];
$sql = "SELECT * FROM contacts WHERE contact_id = :contact_id";
try {
$db = getDB();
$stmt = $db->query($sql);
$stmt->bindParam(':contact_id', $contact_id, PDO::PARAM_INT);
$stmt->execute();
$stmt->debugDumpParams();
$db = null;
echo '{"Contact": ' . json_encode($contact) . '}';
} catch(PDOException $e) {
echo '{"error":{"text":'. $e->getMessage() .'}}';
}
}
私は私が間違って行くことができどこへと迷ってしまいました。どんな指導も高く評価されます。
ありがとうございました。
:[53] SELECT * contact_idは=連絡先FROM:contact_idのparams:1つのキー:名前: [11]:contact_id paramno = 0 name = [11] ":contact_id" is_param = 1 param_type = 1 {"Contact":null}何か案は? –