0

私はphpが初めてです。通常、私の更新クエリは機能していますが、このブロックでのみクエリが失敗し、$_SESSION[id]以前に決定されたものと以前contact_idのフォームから役員の値を取得します。
助けてください...

<?php
$server="localhost";
$db_user="root";
$pass="h6194v";
$db="my_db";
$koneksi=mysql_connect($server,$db_user,$pass)
     or die ("Connection Error!!");
$dateline=date("Ymd");
$query="UPDATE `contact` SET `date`=\'$dateline\', `officer`=\'$_SESSION[id]\' WHERE `contact_id`=\'$_POST[no]\'";
$result=mysql_query($query) or die ("Query fail");
?>
4

5 に答える 5

2

初めに

新しいコードに mysql_* 関数を使用しないでください。それらはもはや保守されておらず、コミュニティは非推奨プロセスを開始しています。赤いボックスが見えますか? 代わりに、準備済みステートメントについて学び、 PDOまたはMySQLiのいずれかを使用する必要があります。決められない場合は、この記事を参考にしてください。学習したい場合は、ここに良い PDO チュートリアルがあります。

それ以外で、mysql を使用する場合:

  1. 接続を確立した後にデータベースを選択するmysql_select_db($db,$koneksi)か、UPDATE ステートメントのテーブル名の前にデータベース名を使用します。UPDATE my_db.contact ...
  2. 他の人が提案したようにUPDATEステートメントを修正してください
  3. 日付に正しい形式を使用するかdate('Y-m-d')、完全に破棄NOW()して UPDATE ステートメントで使用することをお勧めします
于 2013-01-09T06:16:25.403 に答える
0

クエリをフォーマットして、これを試してみました。

$query="UPDATE `contact` SET `date`='{$dateline}', `officer`='{$_SESSION['id']}' WHERE `contact_id`='{$_POST['no']}'";

注: MySQL 関数は使用しないでください。代わりに PDO または MySQLi 関数を使用してください。コードは SQL インジェクションに対してオープンであり、検証を追加するか、準備されたステートメントを使用して保護しようとします。

于 2013-01-09T06:06:50.383 に答える
0

これを試して -

$query="UPDATE `contact` SET `date`='".$dateline."', `officer`='".$_SESSION['id']."' WHERE `contact_id`='".$_POST['no']."'";

ただし、クエリまたはどこでも使用する前に、$_POSTまたは検証してください。$_GET

于 2013-01-09T06:07:27.290 に答える
0

発生しているエラーの種類を知るのに役立ちます。

  1. ユーザー入力またはセッション変数をクエリに直接入れないでください。おそらく、準備されたステートメントを使用して、最初にそれらをサニタイズする必要があります。
  2. このようなエラーが発生した場合は、var_dump と die を使用して、何が起こっているかを確認してください。つまり、クエリ var_dump($_SESSION['id']) の前に。(そして、私がこれを書いている今、配列インデックスに引用符がないことがわかりました。これは問題を引き起こします。

引用符で配列にアクセスする必要があります: $_SESSION['id'], $_POST['no']

于 2013-01-09T06:07:28.223 に答える
-1

updateこのようにクエリを変更します

    $query="UPDATE `contact` SET `date`='".$dateline."', `officer`='".$_SESSION[id]."' 
WHERE `contact_id`=".$_POST[no];

文字列の場合、次contact_idのようにします

$query="UPDATE `contact` SET `date`='".$dateline."', `officer`='".$_SESSION[id]."' 
WHERE `contact_id`='".$_POST[no]."'";
于 2013-01-09T06:05:54.620 に答える