1

これがよくある質問であることは理解していますが、以前にこれで問題が発生しました。データベースに書き込むSQL文をかなり書いたので、なぜこれが起こっているのかわかりません。私のコードは、レコードが書き込まれたと言っていますが、phpmyadmin のデータベースにレコードが表示されません。これが私のコードです:

    $hostname = "localhost";
    $dbusername = "username";
    $dbname = "database";
    $dbpassword = "password";
    mysql_connect($hostname, $dbusername, $dbpassword) OR DIE ("Unable to connect to database! Please try again later.");
    mysql_select_db($dbname);


    $sql = "INSERT INTO 'payment_profiles'(id, client_id) VALUES ( '','$profile_id')";

    mysql_query($sql);
    if(! $sql )
    {
      die('Could not enter data: ' . mysql_error());
    }
    else {
    echo ("We inserted the id");
    }

スクリプトを実行すると「ID を挿入しました」と表示されるので、何が問題なのかわかりません。多分誰かがこれを前に見たことがありますか?注: profile_id 変数はスクリプトの上位で宣言されていますが、ここでは宣言されていません。

4

4 に答える 4

12

ここでいくつかのことが間違っています。

  1. データのサニタイズなし: PHP で SQL インジェクションを防ぐにはどうすればよいですか? を参照してください。
  2. 非推奨のmysql_*関数を使用しており、少なくとも MySQLi を使用するか、できれば PDO を使用してください。PHP で mysql_* 関数を使用すべきではない理由を参照してください。
  3. テーブル名を引用しています'payment_profiles'- 引用する必要がある場合は、バックティック (`) を使用してください
  4. クエリを適切にテストしていません。あなたはテストしています -は空ではない文字列である$sqlため、常に true を返します。$sqlクエリの結果を に割り当て、が true$resultかどうかを確認する(またはエラーを処理する) 必要があります。$result
于 2013-07-02T19:36:26.650 に答える
0

「If」ブロック条件を変更する必要があります。非推奨の mysql_query を使用する場合は、$sql 変数が「定義」されているかどうかではなく、mysql_query が正常に動作したかどうかをテストする必要があります。

$hostname = "localhost";
$dbusername = "username";
$dbname = "database";
$dbpassword = "password";
mysql_connect($hostname, $dbusername, $dbpassword) OR DIE ("Unable to connect to database! Please try again later.");
mysql_select_db($dbname);

$sql = "INSERT INTO 'payment_profiles'(id, client_id) VALUES ( '','$profile_id')";

$result = mysql_query($sql);
if(! $result )
{
  die('Could not enter data: ' . mysql_error());
}
else 
{
    echo ("We inserted the id");
}
于 2013-07-02T19:37:43.553 に答える