0

global_settingsテーブルからwhileループを使用してフォームフィールドにデータを入力する以下のPHP/HTMLがあります

<?php
$global_sql2="SELECT name, field, value FROM global_settings";
$global_rs2=mysql_query($global_sql2,$conn) or die(mysql_error());
while($global_result2=mysql_fetch_assoc($global_rs2))
{
    echo '<tr>
                <td><strong>'.$global_result2["name"].'</strong></td>
                <td><input type="text" name="'.$global_result2["value"].'" size="50" value="'.$global_result2["value"].'" /></td>
            </tr>';
}
?>

フォームが送信されると、データベースの各行がテキスト フィールドに入力された値で更新される必要があります。

たとえば、データベースには次の行があります。

name = Company Name
field = company_name
value = Company ABC

投稿された値は、会社 XYZ として設定されます

したがって、SQLは次のように言う必要があります。

`UPDATE tablename set value = 'Company XYZ' where field = 'company_name'`

しかしそうではない、と言っています:

UPDATE tablename set value = 'Company XYZ' where field = 'company_name'

    <?php
$global_sql3="SELECT name, field, value FROM global_settings";
$global_rs3=mysql_query($global_sql3,$conn) or die(mysql_error());
while($global_result3=mysql_fetch_assoc($global_rs3))
{
    $sql="UPDATE global_settings set value = '".$_POST[$global_result3["field"]]."' where field = '".$_POST[$global_result3["value"]]."' ";
    echo '<br><br>'.$sql;
    $rs=mysql_query($sql,$conn) or die(mysql_error());
    echo '<h3>Successfully Updated</h3>';
}
?>

テーブルが呼び出されglobal_settings、列があります(name, field, value)

したがって、基本的に、名前とフィールドのフィールドは、値のフィールドだけがユーザーによって変更されることはありません

テキストフィールドの値が変更されたときにvalueフィールドglobal_settingsが更新されない - 問題が何であるかわかりません

4

4 に答える 4

0
<td><input type="text" name="'.$global_result2["value"].'" ...
                                                  ^
                                                  |
                                                  +-- problem is here

に変更します

<td><input type="text" name="'.$global_result2["name"].'" ...

アップデート

次のようなテーブルがあるとします。

+------------------+-------------------+-----------------+
|     name         |       field       |      value      |
+------------------+-------------------+-----------------+
|    Company Name  |    company_name   |      XYZ        |
+------------------+-------------------+-----------------+

フォームに次のような情報を表示できます

while(...) {
  echo '<tr><td><strong>' . $row['name'] . '</strong><input name="' . $row['field'] . '" value="' . $row['value'] . '"/></td></tr>';
}

次に、次のように UPDATE クエリを作成する必要があります。

foreach($_POST as $f => $v) {
  $query = "UPDATE `table` SET `value` = '$v' WHERE `field` = '$f'";
}
于 2013-07-28T12:16:20.293 に答える
0

この質問の別の投稿で昨日言ったように:

これを変更する必要があります:

<td><input type="text" name="'.$global_result2["value"].'" size="50" value="'.$global_result2["value"].'" /></td>

これに

<td><input type="text" name="'.$global_result2["field"].'" size="50" value="'.$global_result2["value"].'" /></td>

そうしないと、経由でアクセスできません$_POST[$global_result3["field"]]

この行も変更する必要があります。

$sql="UPDATE global_settings set value = '".$_POST[$global_result3["field"]]."' where field = '".$_POST[$global_result3["value"]]."' ";

これに:

$sql="UPDATE global_settings set value = '".$_POST[$global_result3["field"]]."' where field = '".$global_result3["field"]."' ";

そして、私があなたの以前の投稿で言ったように:

mysqli_* 関数に切り替えます。ext/mysql は非推奨です。そして、それらをSQLクエリに挿入する前に、常に値をエスケープしてください!

于 2013-07-28T12:20:23.590 に答える
0

あなたのコードには少し問題があります

変化する

<td><input type="text" name="'.$global_result2["value"].'" size="50"

`<td><input type="text" name="'.$global_result2["field"].'" size="50" `
于 2013-07-28T12:14:38.563 に答える
-1

値列のみを更新していますが、

UPDATE tablename set value = 'Company XYZ' where field = 'company_name'

他の列を更新するには、SET ステートメントで更新する列を追加する必要があります。

UPDATE tablename set value = 'Company XYZ', name = 'name', field = 'field' where field = 'company_name'
于 2013-07-28T12:15:33.450 に答える