このコードはうんざりです。本当に。私はこれを修正するために昨日働いていて、うまく機能していません。私は誰でも彼らに彼らの入力を与えるだろうappriciateだろう。1回の送信クリックでデータベース値を変更するPHP
私はいくつかの素晴らしい機能を備えた古いCMSを見つけました。しかし、そのCMSは2008年のもので、まだMySQL上で動作しており、もう更新されていません。だから私はそれからいくつかのスクリプトを取り出した。 1つは、送信ボタンを1回クリックするだけで複数のデータベース行on
とoff
を調整することができます。
データベースは次のようになります。
値はオンまたはオフを意味します。オランダではaan
とuit
です。私はオランダのCMSを作っているので、オランダ語で作成していますので、お客様も理解できます。
2008年のCMSのコードはhttp://pastebin.com/EkmB8rFr(私はペーストビンに貼り付けています。これはコードが乱雑でSOが小さすぎるためです)。
私の仕事は、この2008年のコードをすべてのSQLインジェクションが固定された2016年のコードに変換することです。ここに私の結果があります:
<?php
if(isset($_POST['opslaan'])) {
$stmt = $dbConnection->prepare('SELECT * FROM settings');
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
$id = $_POST[$row["id"]];
$row = $row["id"];
$stmt1 = $dbConnection->prepare('UPDATE settings SET value = ? WHERE id = ?');
$stmt1->bind_param('ss', $id, $id);
$stmt1->execute();
}
//header('Location: index.php?page=instellingen');
} else {
$stmt = $dbConnection->prepare('SELECT * FROM settings ORDER BY id ASC');
$stmt->execute();
$result = $stmt->get_result();
?>
<form method="POST" action="">
<table>
<tr>
<th>Naam</th>
<th>Laatst gewijzigd</th>
<th>Waarde</th>
</tr>
<?php
while ($row = $result->fetch_assoc()) {
?>
<tr>
<td><?php echo $row["code"]; ?></td>
<td><?php echo $row["updated"]; ?></td>
<td>
<select name="<?php echo $row["id"]; ?>">
<option value="aan"<?php if($row["value"] == "aan") {echo ' selected';} ?>>Aan</option>
<option value="uit"<?php if($row["value"] == "uit") {echo ' selected';} ?>>Uit</option>
</select>
</td>
</tr>
<?php } ?>
</table>
<input type="submit" value="Opslaan" name="opslaan">
</form>
<?php
}
このコードは2008コードのようには機能しませんし、何が起こっているのか分かりません。 IDはデータベースに格納され、<select>
の値は格納されません。
出力は次のようにする必要があります:
これが問題 '$ stmt1-> bind_param( 'SS'、$のIDは、$ id)をisthe;' –
@Dagonそれは固定ガット、あなたの入力ダゴンに感謝を! –