IamはPDO実行ステートメントに問題があります。私のコードは次のようになります。
try {
$stmt = $this->dbh->prepare("INSERT INTO smtp_servers (host, port, ssl, auth, username, password) VALUES(:host, :port, :ssl, :auth, :username, :password)");
$stmt->bindParam(':host', $serverOptions[0]);
$stmt->bindParam(':port', $serverOptions[1]);
$stmt->bindParam(':ssl', $serverOptions[2]);
$stmt->bindParam(':auth', $serverOptions[3]);
$stmt->bindParam(':username', $serverOptions[4]);
$stmt->bindParam(':password', $serverOptions[5]);
$stmt->execute();
} catch (PDOException $e) {
print("fail");
}
テストを印刷する前に印刷しても「失敗」は印刷されません$stmt->execute();
が、実行行の直後に印刷すると、テキストは印刷されません。
何か案は?
更新しました:
運が悪かったので、より一般的な例外をスローしようとしましたPDO::PARAM_INT
。整数を使用している場所に実装しました。また、次の行を追加しました。
$this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
これで、私のコードは次のようになります。
try {
$stmt = $this->dbh->prepare("INSERT INTO smtp_servers (host, port, ssl, auth, username, password) VALUES(:host, :port, :ssl, :auth, :username, :password)");
$stmt->bindParam(':host', $serverOptions[0]);
$stmt->bindParam(':port', $serverOptions[1], PDO::PARAM_INT);
$stmt->bindParam(':ssl', $serverOptions[2], PDO::PARAM_INT);
$stmt->bindParam(':auth', $serverOptions[3], PDO::PARAM_INT);
$stmt->bindParam(':username', $serverOptions[4]);
$stmt->bindParam(':password', $serverOptions[5]);
$stmt->execute();
} catch (PDOException $e) {
debug("fail");
}
私のデータベーステーブルのデザインを見るのに役立つだろうかと質問しますか?
CREATE TABLE IF NOT EXISTS `smtp_servers` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`host` varchar(50) NOT NULL,
`port` int(11) DEFAULT NULL,
`ssl` smallint(11) DEFAULT NULL,
`auth` smallint(11) DEFAULT NULL,
`username` varchar(50) DEFAULT NULL,
`password` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
今、私はこのエラーを受け取っています:
致命的なエラー:キャッチされない例外'PDOException'とメッセージ'SQLSTATE [42000]:構文エラーまたはアクセス違反:1064SQL構文にエラーがあります。13行目の/var/www/isms/php/communication/Mail.phpの1行目の「ssl、auth、username、password FROM smtp_servers」の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。 PDOException:SQLSTATE [42000]:構文エラーまたはアクセス違反:1064SQL構文にエラーがあります。13行目の/var/www/isms/php/communication/Mail.phpの1行目にある「ssl、auth、username、password FROM smtp_servers」の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。スタック:0.0002 649056 1. {main}()/var/www/isms/index.php:0 0.0023 867336 2. include('/ var / www / isms / php / settings / ismsSettings.php'