php
1<?php 2 3// 変数の初期化 & 日時の取得 4date_default_timezone_set('Asia/Tokyo'); 5$sql = null; 6$res = null; 7$dbh = null; 8$date = date('Y-m-d H:i:s'); 9 10try { 11 // DBへ接続 12 $dbh = new PDO('mysql:host=localhost; dbname=sample; charset=utf8', 'root', 'root'); 13 // var_dump($dbh); 14 if(!$dbh) { 15 echo "接続出来てない"; 16 } 17 // // SQL作成 18 // $sql = "INSERT INTO sample_app ( 19 // user_name, email, password, role, created, updated 20 // ) VALUES ( 21 // ':user_name', ':email', ':password', ':role', ':created', ':updated' 22 // )"; 23 // $stmt = $dbh->prepare($sql); 24 // $params = array( 25 // ':user_name' => 'ユーザーネーム', 26 // ':email' => 'メール', 27 // ':password' => 'パス', 28 // ':role' => 0, 29 // ':created' => $date, 30 // ':updated' => '0000-00-00 00:00:00' 31 // ); 32 // $stmt->execute($params); 33 34 // // SQL実行 35 // $res = $dbh->query($sql); 36 // return $res; 37 $user_name = "name"; 38 $email = "email"; 39 $password = "pass"; 40 $role = 0; 41 $updated = '0000-00-00 00:00:00'; 42 43 // SQL作成 44 $stmt = $dbh->prepare("INSERT INTO sample_app ( 45 user_name, email, password, role, created, updated 46 ) VALUES ( 47 ':user_name', ':email', ':password', ':role', :created', ':updated' 48 )"); 49 $stmt->bindParam(':user_name', $user_name, PDO::PARAM_STR); 50 $stmt->bindParam(':email', $email, PDO::PARAM_STR); 51 $stmt->bindParam(':password', $pass, PDO::PARAM_STR); 52 $stmt->bindValue(':role', $role, PDO::PARAM_INT); 53 $stmt->bindParam(':created', $date, PDO::PARAM_STR); 54 $stmt->bindParam(':updated', $updated, PDO::PARAM_STR); 55 $stmt->execute(); 56} catch(PDOException $e) { 57 echo $e->getMessage(); 58 die(); 59} 60 61// 接続を閉じる 62$dbh = null; 63 64 65 66 67?> 68 69エラー文 70Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in /Applications/MAMP/htdocs/test.php on line 55 71何度やってもどこが間違っているのかよくわかりません。 72どなたかご教授ください
コードやエラーはマークダウンのcode機能を利用してご提示ください。
https://teratail.com/questions/238564
>サイトに乗っている通りにやっても
「参考した先が絶対に間違ってない」という根拠がないので、
その参考にしたサイトURLを提示してください。間違っていれば筆者に指摘する必要があります。
あと環境情報も。
全て同じに整えたのなら、コードは書いたとおりに動くので「動かない」という現象は起きません。
大抵は「通りにできていない」からできてません。コードは書いたとおりに動いています。