チュートリアルを通して私はデータベースにデータを挿入するhtmlフォームを作成しました。それはうまくいきますが、チュートリアルではなぜ配列リストにそのようなコードを使用するのか説明されていません。フォームからphp pdo挿入配列
$db = new PDO("mysql:host=localhost;dbname=test", "test_user", "test123");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
if(isset($_POST['btn-add']))
{
$fields= (is_array($_POST['fields'])) ? $_POST['fields'] : array();
$insertStmt = $db->prepare("INSERT INTO test (test_field) VALUES (:field)");
foreach ($fields as $field) {
$insertStmt->execute(array('field' => $field));
}
}
<form action="" method="POST">
<label>field 1 <input type="text" name="fields[0]"></label>
<label>field 2 <input type="text" name="fields[1]"></label>
<button type="submit" name="btn-add">add</button>
</form>
私の質問はこの行についてです。たぶん誰かがそれを説明するかもしれない。
$products = (is_array($_POST['fields'])) ? $_POST['fields'] : array();
この行の機能 - ? $ _POST ['fields']:array();
それは$製品とうまく動作しないのはなぜ=(IS_ARRAY($ _ POST [「フィールド」]))
また、これは、フォームからの配列の挿入を作成するための良い方法ですか私で検索します別のチュートリアルですか?
これは* 3進演算子* - http://php.net/manual/en/language.operators.comparison.php#language.operators.comparisonと呼ばれています。'is_array($ _ POST ['fields'])'を実行するだけでは、値/配列ではなく真/偽の真偽値を返します。 – Qirel
'$ _POST ['fields']'と等しいか、または '$ products'が' array() 'と等しい場合は、' is_array($ _ POST ['fields']) - 三元演算子 – Kitson88
Qirelが書いたように。私はあなたのソリューションが '_POST ['fields']'変数の型に応じて 'products'変数に' true'または 'false'(boolean)を代入することを追加するだけですが、ブール値ではありません。元の行が何をしているのですか?それは配列か空の配列であれば '_POST ['fields']'の内容をそこに割り当てます。 –