前提・実現したいこと
PHPのprepareからSQLSERVRにストアドを呼び出してinsertを行うと、2回実行されて2行が挿入されてしまいます。
該当のソースコード
<PHP
...この部分で、GETで取得した引数6個をチェックし変数に収納。7つ目は戻り値。
以下略
//PDOオブジェクトの生成
$conn =new PDO("sqlsrv:server=127.0.0.1;Database=nafuda","users","password");
$stmt = $conn -> prepare("{ CALL testA (?,?,?,?,?,?,?) }");
$stmt ->bindParam(1,$paramsrcNum, PDO::PARAM_STR);
$stmt ->bindParam(2, $paramgps, PDO::PARAM_STR);
$stmt ->bindParam(3, $paramgend, PDO::PARAM_INT);
$stmt ->bindParam(4, $paramage, PDO::PARAM_INT);
$stmt ->bindParam(5, $parampw, PDO::PARAM_STR);
$stmt ->bindParam(6, $paramreferral, PDO::PARAM_STR);
$stmt ->bindParam(7, $rtrn, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT,9);
// 実行
$stmt ->execute();
#送信データ(1行)の作成(連想配列) $result = array( 'srcNum' => $paramsrcNum, 'tokent'=> (string)$rtrn , ); #リストに追加 array_push($result);
//PDOを開放
$conn = null;
$json['result'] = $result; //結果リストをJSONに登録
http_response_code(200); //HTTPレスポンスコード(200正常終了) header('Content-Type: application/json; charset=UTF-8'); header("X-Content-Type-Options: nosniff"); echo json_encode($json, JSON_UNESCAPED_UNICODE); //エンコードして送信 exit();
?>
試したこと
ストアドをSSMS上で直接実行すると、1行のみinsertされる。またPHPから実行すると、戻り値は後からinsertされた時のものが1つだけ返される。(json形式で出力)
コードを見る限り、executeが1回行われているだけのように見えるのですが...
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー