-3
<?php
include_once( 'mysqlconnect.php' );

$id=$_POST['id']; //line 8

header("location:settings_pay_roll.allowance.general.view.php?id='$id'");

?>

出力:

SQL 構文にエラーがあります。1 行目の '8''' 付近で使用する正しい構文については、//MySQL サーバーのバージョンに対応するマニュアルを確認してください。

エラーが?id='$id'.

ちなみに、名前が示すように mysqlconnect.php は接続スクリプトであり、 $id は別のページからの投稿リクエストから取得されます。settings_pay_roll.allowance.general.view.php は空のスクリプトであり、すべてエラーはありません

4

3 に答える 3

2

ヘッダー関数が呼び出されると、PHP エンジンが settings_pay_roll.allowance.general.view.php ページでコードの実行を開始し、そのページに SQL エラーがあるため、SQL エラーが表示されます。

使用した構文は完全に有効ですが、論理的に正しくない可能性があるため、ここではヘッダー関数にエラーがないことに注意してください。そのため、単一引用符が使用されているため、次のページで必要な id 値が取得されず、SQL エラーが生成されました。

これが物事を明確にすることを願っています。

于 2013-05-07T10:21:45.427 に答える
1

アポストロフィは必要ありません。

<?php
  include_once( 'mysqlconnect.php' );

  $id=$_POST['id']; //8

  header("location:settings_pay_roll.allowance.general.view.php?id=$id");
?>

あなたのコードで$_GET['id']は、どこかでそれを取得string(3) '8'してSQLで使用しようとします。

他のコメントのいくつかに同意します。これは完全に悪用される可能性があります。get 変数の代わりに post 変数を使用することを検討してください。

于 2013-05-07T10:22:02.027 に答える
0

データベースに接続する必要はありません

<?php
if(isset($_POST['id']) && is_numeric($_POST['id']))
{
    $id = $_POST['id'];
    header("Location: settings_pay_roll.allowance.general.view.php?id=$id");
}
else
{
    echo 'Post is missing';
}
?>
于 2013-05-07T10:23:51.970 に答える