-1

印刷時に投稿配列を作成しました。次の出力が得られます。

Array ( [name] => gowtham [content] => Nice Website )

ここで、配列のキーはデータベースの列名で、値はデータベースの値です。これらの値を使用してデータベースを更新したいのですが、ポスト配列のこれらの値は、html フォームに基づいて変更されます。

implode を使用して文字列を作成しました。

$query ="UPDATE ".$_SESSION['table']." SET ".implode(' = ',$array);

しかし、私の出力は

UPDATE testimonials SET gowtham = Nice Website

次のように出力したい

UPDATE testimonials SET name = gowtham , content = Nice Website

私を助けてください

4

3 に答える 3

3

このアプローチは非常に安全ではありません。このようなものを処理するdbクラスを使用することをお勧めします....私は次を使用します: http://www.imavex.com/php-pdo-wrapper-class/

于 2013-07-04T16:18:59.310 に答える
1

この方法を試してください

$cols=array_keys($yourarray);
$cols=array_values($yourarray);
$colnames = "`".implode("`, `", $cols)."`";
$colvals = "`".implode("', '", $vals)."`";
$query="update tablename set ($colnames) values ($colvals)";
于 2013-07-04T16:25:16.703 に答える
0

このようなもの

$update = '';
$i = 0;

foreach ( $_POST as $key => $value ) {
    $update = $key . ' = "' . $value . '"' . ( $i == count( $_POST ) ? ', ' : '' );
    $i++;
}

$query ='UPDATE ' . $_SESSION['table'] . ' SET ' . $update;

ループを実行する前に送信ボタンの設定を解除する必要がある場合があることに注意してください。ID で更新する必要がある場合は、ループと where 句でそれをスキップする必要があります。if ステートメントがおそらく最も簡単です。

また、PHP の mysql_* 関数はバージョン 5.5 で廃止されているため、PDO または mysqli を試して使用する必要があることにも言及する価値があります。

PS - データをサニタイズしていないことはわかっていますが、サニタイズする必要があります。

于 2013-07-04T16:21:07.900 に答える