1

データベースへのデータの更新と挿入に問題があります。プログラムの大部分をデバッグしたので、問題が更新用のコード行とデータ挿入用のコード行にあることは確かです。それらは同じコードを使用する他の関数であり、各関数で使用したすべての変数は関数でローカルに宣言されているため、競合していないことがわかっているため、非常に混乱しています。上部にあるコードは、データベースと php との通信回線を開くためのすべてのデータベース コードです。そのコードは機能します。他のプログラムで既にテストしました。データベースから SELECT コードを使用してデータを取得することはできますが、名前がテーブルと一致するかどうかを確認し、再確認しました。このコードはいくつかの ajax コードの一部であるため、リアルタイムで更新されますが、javascript で使用する投稿はデータを php ファイルに転送します。そのため、何が間違っているのか、サーバーに何か問題があるのか​​ わかりません。誰かアイデアがあれば教えてください。また、このコードの目的は、ユーザーが自分のサイトで表示しているコンテンツを気に入ったり、お気に入りにしたり、5 つ星の評価を付けたりできるようにすることです。

これはコードです:

<?php include "base.php";?>
</head>
<?php
$rateMe = mysql_query("SELECT * FROM rating WHERE Username = '".$_SESSION['Username']."' AND Title = '".$_POST['myTitle']."'");
if(mysql_num_rows($rateMe) == 0)
{
    $registerquery = mysql_query("INSERT INTO rating (Username, Author, Star, Like, Favorite, Title) VALUES('".$_SESSION['Username']."','".$_POST['myAuthor']."','".$_POST['myrating']."','".$_POST['myLike']."', '".$_POST['myFavorite']."', '".$_POST['myTitle']."')");
}else
{
    $makeUpdate = mysql_query("UPDATE rating SET Star = '".$_POST['myrating']."' WHERE Username = '".$_SESSION['Username']."' AND Title = '".$_POST['myTitle']."'");
}
?>

これは、データを挿入しようとしているテーブルです

表: 評価

ユーザー名 varchar(255)

作者 varchar(255)

スターフロート

varchar(255) のように

お気に入りの varchar(255)

タイトル varchar(255)

4

2 に答える 2

1

挿入クエリを印刷すると、おそらく次のようになります

INSERT INTO rating (Username, Author, Star, Like, Favorite, Title) VALUES('John','Jim','xx','xx', 'xx', 'xx')

挿入ステートメントのlikeキーワードは、おそらく以下のようなエラーをスローします

SQL 構文にエラーがあります。near 'like) values('John' を使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

アップデートが機能しているかどうかを確認する

于 2012-07-30T22:43:12.313 に答える
0

Markus がほのめかしたように、コードは SQL インジェクション攻撃に対して非常に脆弱です。さらに、PHP マニュアルでは、mysql 拡張機能よりもmysqli拡張機能を使用することを強く推奨しています。

PDO、準備済みステートメント、モデルにデータを INSERT/UPDATE する正しい方法に関するこの記事を読むことをお勧めします。

于 2012-07-30T22:51:22.450 に答える