<?php
include('session.php');
?>
<?php
$conn = new mysqli("127.0.0.1","root","","foo");
if ($conn->connect_errno) {
echo "Failed to connect to MySQL: (" . $conn->connect_errno . ") " . $conn->connect_error;
}
$sew = $_SESSION['login_user'];
$a=$_GET["en"];
$l=1;
$d= -1;
if($a==1)
{
$sqlw = " INSERT into dlkeuser VALUES('$a','$sew')" ;
if ($conn->query($sqlw) === FALSE)
{
echo "you have already disliked the song";
}
else
{
//query1
$sql = " DELETE FROM lkeuser WHERE userid = '$sew' AND songid = '$a' " ;
//query2
$sql = "UPDATE liking
SET count = count - 1 ";
if ($conn->query($sql) === TRUE) {
echo "you disliked the song";
}
else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}
このPHPコードスニペットでは、クエリ1は動作しませんが、クエリ2は正常です。 ユーザi/p($ _ GET ["en"])に対してdlkeuser(dislike)テーブルに(songid、userid)を挿入しようとしていて、lkeuser(like)テーブルからそのレコード(songid、userid)を削除しようとしています。 (songid、userid)pairは、ここで複合主キーです。 "count"は曲のネットのようなものです。 私はPHPに新しいです。 ご協力いただきありがとうございます。php delete sqlのクエリが機能しない
に動作します、のは、これを試してみましょう(http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)*** [準備された]について学ぶ(http://en.wikipedia.org)/wiki/Prepared_statement)ステートメント([MySQLi](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php))を参照してください。 [文字列をエスケープする](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)でも安全ではありません! [それを信じていない?](http://stackoverflow.com/q/38297105/1011527) –
あなたのコードはSQLインジェクションに広く開いているので、あなたは現在あなたが実行しているSQLコードを制御していません。実行時に、実際のSQLコードは何ですか?見つけ出すためにあなたの '$ sql'変数を' echo 'します。そのコードはあなたが期待しているものですか?データベース上でそのコードを手動で実行すると、何が起こりますか? – David
クエリを個別に実行する必要があります。 – Tony