2016-09-16 14 views
-1
$sql = $pdo->prepare("INSERT INTO test(name,city)VALUES(:vary,'china')"); 
$sql->bindParam('vary',$vary, PDO::PARAM_STR); 
$vary=1234; 
$sql->execute(); 

:varyパラメータには文字列を使用していないため、エラーが発生します。これは正常に動作しており、テーブルtestに1行を挿入します。誰かがエラーがない理由を説明することができますか?私はまだstackoverflowで同じ質問を見つけるPHP PDO::bindParam() data types.. how does it work?しかし、私はまだ混乱している、より良い説明をすることができます..PDO :: PARAM_STRとPDO :: PARAM_INTにエラーが発生しない

+0

*「エラーが発生していません」* - あなたはそれらをチェックしていますか? http://php.net/manual/en/pdo.error-handling.php --- http://php.net/manual/en/function.error-reporting.php –

+0

@ Fred-ii-テーブル内の行であるため、正常に動作しています – beginner

+0

カラムのタイプは何ですか?もしそれがvarcharなら '$ vary'は文字列文字を含んでいないのでエラーを投げません。あなたのカラムが 'int'ならば、それは別の話になります。 –

答えて

1

これはPHPのジャグリングのためにエラーはありません。言い換えれば:PHPは文字列として使用しようとすると、文字1234を文字列1234にサイレントキャストします。

type jugglingの詳細については、PHPマニュアルを参照してください。