2

これは私の質問です

$db2=mysql_connect("localhost","root","");
    mysql_select_db("my_requests",$db2);

    $query=mysql_query("SELECT * FROM details INNER JOIN product ON details.user_id = product.user_id"); // find the city
    $row=mysql_fetch_array($query);// save record

        $id=$row['user_id'];
        echo "$id";


        $query1=mysql_query("DELETE * FROM details WHERE details.user_id=$id");
        $query2=mysql_query("DELETE * FROM product WHERE product.user_id=$id");

ここには製品と詳細の2つのテーブルがあり、ユーザーIDは詳細の主キーであり、製品の外部キーになっています。

データベースに user_id =12 の 2 つのエントリと user_id=11 の別のエントリがあるとします。 user_id を使用すると、テーブルからデータが削除されません。

下手な英語でごめんなさい

4

2 に答える 2

7

クエリ適切な構文にはDELETE*

DELETE FROM product WHERE product.user_id=$id
//^^^^^^^^^

基本的なエラーチェックとデバッグを行うと、APIは構文エラーを報告します。

// This query has a syntax error and will return FALSE...
$query1 = mysql_query("DELETE * FROM details WHERE details.user_id=$id");
if (!$query1) {
  // On failure, see what your error was.
  echo mysql_error();
}

上記は、次のようなエラーを報告します。

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

于 2012-05-25T12:37:26.660 に答える
1

クエリでは、2つのテーブルを結合しているため、 likeまたはSELECTを取得するためにテーブルを指定する必要があります。あなたの場合、それは同じ結果です。*details.*products.*

$row=mysql_fetch_array($query);また、各行をフェッチするためにループに配置する必要があります。そうすると、DELETE構文が正しくなくなります。

while($row=mysql_fetch_array($query)) {
    $id=$row['user_id'];
    echo "$id";

    $query1=mysql_query("DELETE FROM details WHERE details.user_id=$id");
    $query2=mysql_query("DELETE FROM product WHERE product.user_id=$id");


}
于 2012-05-25T12:38:18.013 に答える