1

これは別の投稿へのフォローアップの質問です (リンク)

準備されたステートメントを使用してmysqlの更新を実行する方法に頭を悩ませようとしています。WHERE id = ?.. を追加する必要があります。配列からそれを取得する方法について混乱しています。ありがとう!

私のフォーム:

<form action="update.php" method="post">

  <input type="hidden" name="id" value=""/>
  <input type="text" name="name" value=""/>
  <input type="text" name="age" value=""/>

  <input type="hidden" name="id" value=""/>
  <input type="text" name="name" value=""/>
  <input type="text" name="age" value=""/>

  <input type="submit" value="submit" name="submit" />
</form>

PHP:

// Create statement object
$stmt = $db->stmt_init();


if (isset($_POST['submit'])) {

// Create a prepared statement
if($stmt->prepare("UPDATE contact SET (name, age) VALUES (?, ?)")) {

    // Bind your variables to replace the ?s
    $stmt->bind_param('si', $name, $age);


    $returnedData = $_POST['data'];

for($i=0;$i<count($returnedData);$i+=3){
    $id = $returnedData[$i]['id']
    $name = $returnedData[$i+1]['name'];
    $age = $returnedData[$i+2]['age'];
    $stmt->execute();
}


    // Close statement object
    $stmt->close();
}

}

4

2 に答える 2

2

フォームのデータは$_POST['id']$_POST['name']および$_POST['age']に表示されますが、投稿したコードではこれらの変数を使用していません。

id実際にはフォームに値を設定していません。非表示の ipputs は次のようになります。

  <input type="hidden" name="id" value="myID"/>

戻ります$_POST['id'] == "myID"

また、フォームがこれらの変数の 2 つのセットを要求していることにも注意してください。名前を何らかの方法で変更しない限り、最初のセットは表示されません。

于 2013-07-09T21:13:02.463 に答える