前提・実現したいこと
php上でtestテーブル内の「loginid」が既にあれば「last」を更新,なければ新たに追加という機能をプログラムしているのですがうまくいきません.
データベースへの接続はできているのですがexecuteがうまくいっていないようです
自分の力だけではお手上げです.お力添えをお願いします!!
発生している問題・エラーメッセージ
Uncaught Error: Call to a member function execute() on boolean in ******
該当のソースコード
$url = "mysql:host= ---"; //mysqlサーバ名
$dbname = "dbname=---"; //データベース名
$dbuser = "---"; //ユーザID
$dbpassword = "---"; //パスワード
$dbtable = "test"; //テーブル名
$loginid = "aaa";
$password = "bbb";
$nickname = "ccc";
//データベースへの接続
try{
$pdo = new PDO($url.';'.$dbname,$dbuser,$dbpassword,array(PDO::ATTR_EMULATE_PREPARES => false));
}
catch(PDOException $e){
exit('データベース接続失敗.: '.$e->getMessage());
}
//テーブルへのデータ書き込み
$sql = "INSERT INTO $dbtable (loginid, password, nickname, date, last) VALUES(:loginid, :password, :nickname, :date, :last) ON DUPLICATE KEY UPDATE last = VALUES(last)";
$stmt = $pdo -> prepare($sql);
$params = array(':loginid' => "$loginid", ':password' => "$password", ':nickname' => "$nickname", ':date' => date("Y-m-d H:i:s"), ':last' => date("Y-m-d H:i:s"));
$stmt ->execute($params);
echo '登録完了';