1

基本的に私がやろうとしているのは、ID が 6 のクライアントを削除し、50 のクライアントがある場合、ID が 50 のクライアントを 6 に更新したいということです。

これは PHP での私のコードですがmysql_query、同時に 2 -s を実行することはありません。少なくともそれが問題だと思います。それ以外の場合、SQL 構文は正常に機能します。

public function delete () {
    $last=$this->numrow; //contains last ID works fine

    if (isset ($_GET['x'])) {
        mysql_query('DELETE FROM proba WHERE ID ='.$_GET['x']);
        mysql_query('UPDATE proba SET ID='.(int)$_GET['x'].'WHERE ID='.(int)$last);
    }
}

$_GET['x']は、クリックされた ID が含まれます。しかし、最初のものだけmysql_queryが実行され、2番目のものも実行されるようにするにはどうすればよいですか?

そして別の質問は<a href="munka/index.php?x=5" > [-] </a>、x = 5をaで取得することは可能$_POSTですか?

4

5 に答える 5

0

mysqlの置換クエリを使用すると、多くの問題を回避できる可能性があります。詳細については、http://dev.mysql.com/doc/refman/5.6/en/replace.html を参照してください。

于 2013-02-21T11:44:08.100 に答える
0

ほとんどの場合、最初のクエリで php エラーに直面しています。PHPのエラーログを確認してください。

2 番目の質問$_GETは、たとえば URL からパラメーターを取得するために使用されます。

munka/index.php?x=5

$_POSThttp 投稿 (通常はフォーム送信) に投稿されたパラメーターを取得するために使用されます。

于 2013-02-21T11:45:44.853 に答える
0

where句の前にスペースを入れて更新クエリを変更するだけです

 mysql_query('UPDATE proba SET ID='.(int)$_GET['x'].' WHERE ID='.(int)$last);
于 2013-02-21T11:52:26.500 に答える
0

InnoDB Mysql DB Engine を使用してトランザクション サポートを使用することをお勧めします。これにより、削除と更新の両方が miss なしで COMMIT と一緒に実行され、何か問題が発生した場合、削除の変更は ROLLBACK を取得します。

于 2013-02-21T12:43:24.110 に答える
-2
 if (isset($_GET['x'])) {
        mysql_query('DELETE FROM proba WHERE ID =' . $_GET['x']);
        mysql_query('ALTER TABLE `proba`  DROP `ID`;');
        mysql_query('ALTER TABLE  `proba` ADD  `ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST');
    }

Phpmyadmin で 5 番目のレコードを削除し、id 列を削除して id 列を再作成してみてください。仕事です。

于 2013-02-21T11:53:54.467 に答える