0

add.phpページのフォームを使用してデータベースに連絡先を追加しています。このフォームのINSERTコードは、php.phpページと呼ばれる別のページにあります。php.phpには、ユーザーを別のページにリダイレクトしたいヘッダー関数がありますedit.php?ID = 100、ID=100は入力されたばかりの連絡先です。これを行うにはどうすればよいですか?ヘッダー関数とINSERTクエリの前にデータベースからフェッチを行う必要がありますか?

<?php

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

  header("location: http://www.mydomain.com/contacts/edit/?ID=<? echo $row['ID]; ?>");

  $connect = mysql_connect (...)

  mysql_select_db ("mydb);

  $ID = $_POST['ID'];
  $fname = $_POST['fname'];
  $lname = $_POST['lname'];

  $sql = ("INSERT INTO contacts (fname, lname) VALUES ('$_POST[fname]', '$_POST[lname]')");

  mysql_query($sql,$con) or die ("Error: ".mysql_error());

  exit;
}

?>
4

4 に答える 4

0

header関数( )にphpコードを埋め込むことはできません<? echo $row['ID]; ?>。あなたがやろうとしていることを達成するために、あなたはINSERTヘッダー関数の前にコードを持っているべきです。次に、入力した連絡先のIDを取得してから、次のようにヘッダー関数を呼び出す必要があります(取得したIDが取得されたと仮定し$idます)。

header("location: http://www.mydomain.com/contacts/edit/?ID=".$id);

最後に挿入された行のIDを取得するには、mysql_insert_id関数(参照)を使用できますが、mysqliバージョンを使用することをお勧めします。

于 2012-06-26T23:55:58.687 に答える
0

現在のスクリプトが実行したいことをすべて実行した、ヘッダーを送信する必要があります。ヘッダーを送信しても、必ずしもそのスクリプトの実行がすぐにキャンセルされるわけではありません。それでも少しの間持続する可能性がありますが、SQL呼び出しを行った後に実行する必要があります。

于 2012-06-26T23:36:22.103 に答える
0

ヘッダーはスクリプトの実行を終了しません。ロケーションリダイレクトを使用する場合は、スクリプトを終了することをお勧めします。これは正しいことです。

1つ注意してください。ヘッダーの前に、出力をstdoutに配置しないでください。

于 2012-06-26T23:44:22.780 に答える
0

mysql_insert_idはあなたが探している関数だと思います挿入されたばかりのフィールドのAUTO_INCREMENTIDが返されます。次に、それをヘッダーリダイレクトにプラグインできます。連絡先を挿入した後は、必ずヘッダーリダイレクトを実行してください。それはうまくいくでしょう。

動作するはずのコード:

<?php

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

$connect = mysql_connect (...)

mysql_select_db ("mydb");

$ID = $_POST['ID'];
$fname = mysql_real_escape_string($_POST['fname']);
$lname = mysql_real_escape_string($_POST['lname']);

$sql = "INSERT INTO contacts (fname, lname) VALUES ('$fname', '$lname')";

mysql_query($sql,$connection) or die ("Error: ".mysql_error());

header("location: http://www.mydomain.com/contacts/edit/?ID=".mysql_insert_id($connection));

exit;
}

?>

あなたが投稿したコードもMySQLインジェクションの影響を受けやすいので、それが起こらないようにmysql_real_escape_stringを入力しました。入力をクエリに入れる前に、必ずサニタイズしてください。PHPが提供するMySQLi関数を確認することをお勧めします。

于 2012-06-26T23:54:14.547 に答える