-1

URLを介していくつかのパラメータを渡してページにアクセスします。

www.mypage.com/page.php?aID=4091cdcd-773d-4ca5-bab2-41e1188870a9&sID=1_MX4yMjI1MTgxMn4xMjcuMC4wLjF-V2VkIERlYyAyNiAwOTo1MDoyNiBQU1QgMjAxMn4wLj

次に、私のPHPコードには次のようなものがあります。

if(isset($_GET['sID'])) {
    $sID = $_GET['sID'];
}
if(isset($_GET['aID'])) {
    $aID = $_GET['aID'];
}
if(isset($_GET['nam'])) {
    $nam = $_GET['nam'];
}
if(isset($_GET['tel'])) {
    $tel = $_GET['tel'];
}

$namとの取得に問題はありません$tel$aID$sID常に空の文字列を取得します。二重引用符を使用してみ(isset($_GET["aID"]))ましたが、違いはありません。

文字列に不正な文字が含まれていたり、URLを通過できる変数のサイズに制限がありますか?どうすれば変数を取得できます$aID$sID

$query = "INSERT INTO myTable (ArchiveID, SessionID, Name, Tel) VALUES ('$aiD', '$siD', '$nam', '$tel' )";

echo $query;

エコー$queryの出力は次のとおりです。

INSERT INTO myTable(ArchiveID、SessionID、Name、Tel)VALUES(''、''、'Gab'、 '7777777777')

4

2 に答える 2

4

URLをテストすると、次の結果が得られます。

配列
((
    [aID] => 4091cdcd-773d-4ca5-bab2-41e1188870a9
    [sID] => 1_MX4yMjI1MTgxMn4xMjcuMC4wLjF-V2VkIERlYyAyNiAwOTo1MDoyNiBQU1QgMjAxMn4wLjg1MjA4MTF-
    [nam]=>ギャブ
    [tel] => 7777777777
)。

したがって、空の文字列を取得しているとはどういう意味かわかりません。コードにタイプミスがありましたが、ここで$tel参照し$_GET['aID']ます。コードを確認することをお勧めします。

$_SERVER['REQUEST_METHOD']スクリプトがを使用していることを確認するためにもを使用することをお勧めしますGET

アップデート

更新されたクエリによると、ケースが正しくないようです。変数名では大文字と小文字が区別されます。

$ query = "INSERT INTO ... VALUES('$ aiD'、'$ siD'、'$ nam'、'$ tel')";
                                     ^ ^

する必要があります:

$ query = "INSERT INTO ... VALUES('$ aID'、'$ sID'、'$ nam'、'$ tel')";
  1. PHPを開発するときは、エラーの報告とログ記録を最高レベルで有効にする必要があります
  2. 呼び出したメソッドの戻り値をチェックして、それらが思ったとおりに実行されたかどうかを確認する必要があります。何かが失敗した場合は、より多くのエラー情報を探す必要があります。
  3. SQLインジェクションを防ぐために、プリペアドステートメントを調べる必要があります。

そして、はい、mysql_*関数は非推奨になりました。新しいコードには使用しないでください。

于 2013-01-04T21:09:15.273 に答える
0

SQLステートメントで、定義した変数を呼び出していないことに気づきました。

$query = "INSERT INTO myTable (ArchiveID, SessionID, Name, Tel) VALUES ('$aiD', '$siD', '$nam', '$tel' )";

する必要があります:

$query = "INSERT INTO myTable (ArchiveID, SessionID, Name, Tel) VALUES ('$aID', '$sID', '$nam', '$tel' )";

njkがこれを反映するように回答を更新したように見えるので、回答のクレジットを取得する必要があります。

于 2013-01-04T21:13:15.203 に答える