全て、
自動インクリメント ID と 2 つのデータ フィールドの 3 つのフィールドを持つテーブルを作成しました。データの 2 つのフィールドは外部キーであり、誤って に設定しましたNON NULL
。次に、次の PHP コードを実行します。
$inserted=false;
$insertQuery=$dbConnection->prepare("INSERT INTO $this->table () VALUES ()");
$inserted=$insertQuery->execute(); //Should be true if succesful, False if not.
echo $inserted;
exit;
それは a 1
- を表示するので、の値は$inserted
ですtrue
。この変数をコントロールとして使用して、クエリが正常に実行されたことを確認します。
ただし、データベースを確認すると、クエリは実行されていません。手動で入力すると、2 つのデータ フィールドで値が許可されないため、エラーが発生しnull
ます。
私の質問は次のとおりです。挿入がエラーになったのに、コードでの値が$inserted
切り替わるのはなぜですか?true
PS: phpMyAdmin でクエリを手動で実行するには、次のようにします
INSERT INTO 'flashcards' () VALUES ()
:
#1452 - Cannot add or update a child row: a foreign key constraint fails ('project'.'table1', CONSTRAINT 'table1_ibfk_1' FOREIGN KEY ('data1') REFERENCES 'table2' ('data2') ON DELETE NO ACTION ON UPDATE NO ACTION)
PPS: 以下に示す vardump コードを追加すると:
var_dump("Result: ", $inserted);
var_dump("Affected: ", $insertQuery->rowCount());
var_dump("Warnings: ", $insertQuery->errorInfo());
次に、次のようになります。
string 'Result: ' (length=8)
boolean true
string 'Affected: ' (length=10)
int 1
string 'Warnings: ' (length=10)
array
0 => string '00000' (length=5)
1 => null
2 => null