删除 PHP 中 mySQL table 的所有行

Delete all rows from mySQL table in PHP

我想通过单击 PHP 中的按钮删除 table 中的所有行。我用过这个代码

<form>
  <input type="submit" class="button" name="delet" id="delet" value="DELETE WHOLE DATA"/>
</form>
<br></br>
<?php

  //if($_GET){
  if(isset($_GET['delet'])){

    $link = mysql_connect('localhost', 'root', '');
    if (!$link) {
      die('Could not connect: ' . mysql_error());
    }
    $sql = "DELETE  FROM tfinal";
    $sql1=mysql_query($sql, $link);
    if (mysql_query( $sql1)) {
      echo "Database dqqwewrw was successfully dropped\n";
    } else {
      echo 'Error dropping database: ' . mysql_error() . "\n";
    }
  }
?>

但在毁掉它之后说:Error dropping database: Query was empty 关于克服这个问题的任何想法

  1. 停止使用 mysql_* - 它是 officially deprecated and vulnerable to injection。切换到使用 mysqli_* 或 PDO 准备语句。
  2. DELETE用于删除行; DROP 用于删除表。您的 SQL 查询应如下所示:

    $sql = "DROP TABLE `tablename`";
    
  3. 您正在 运行查询两次 - 一次在 $sql1 = mysql_query(...) 中,另一次在 if(mysql_query(...)) 中。对于 DROPDELETE 查询,it will return TRUE on success and FALSE on error.

  4. 第二次 运行 查询 (if(mysql_query(...))) 您查询的是第一个查询 ($sql1) 的结果,而不是查询本身 ( $sql)。您应该改写:

    if(mysql_query($sql)){
    

    ...但改为 PDO/mysqli_ 格式。


参考文献:

if(mysql_query($sql1)) {

这是错误的。 $sql1 由 mysql_query() 返回,因此它不是查询,而是结果。

相关:What does a successful MySQL DELETE return? How to check if DELETE was successful?

进行以下更改:

<form>
  <input type="submit" class="button" name="delet" id="delet" value="DELETE WHOLE DATA"/>
</form>
<br></br>
<?php

  //if($_GET){
  if(isset($_GET['delet'])){

    $link = mysqli_connect('localhost', 'root', '');
    if (!$link) {
      die('Could not connect: ' . mysql_error());
    }
    $sql = "DROP TABLE tfinal";
    //$sql1=mysql_query($sql, $link);
    if (mysqli_query($link, $sql)) {
      echo "Database dqqwewrw was successfully dropped\n";
    } else {
      echo 'Error dropping database: ' . mysqli_error() . "\n";
    }
  }
?>

试试这个代码:

<form>
    <input type="submit" class="button" name="delet" id="delet" value="DELETE WHOLE DATA"/>
</form>
<br></br>

<?php
if(isset($_GET['delet'])){
    $connection = mysqli_connect('localhost', 'root', 'root', 'testlo');
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }
    $sql = 'DELETE FROM tbl_fordelete';
    $sql1=mysqli_query($connection, $sql);
    if ($sql1) {
        echo "Database dqqwewrw was successfully dropped\n";
    } else {
        echo 'Error dropping database: ' . mysql_error() . "\n";
    }
    $connection->close();
}

如果你想删除你的 table,首先,你应该创建 table 临时 示例:

$i="i";$joined=$i.$numCar;
        $sql = "CREATE TEMPORARY TABLE $joined (
                id  INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
                km INT(11) UNSIGNED NOT NULL,
                gas INT(1) UNSIGNED NOT NULL,
                comment TEXT NOT NULL,
                date VARCHAR(32) NOT NULL,
                workId INT(11) UNSIGNED NOT NULL,
                name VARCHAR(32) NOT NULL,
                damage TINYINT(1) NOT NULL,
                image1 VARCHAR(128) NOT NULL,
                image2 VARCHAR(128) NOT NULL)";

然后你可以删除table,例如:

$i="i";$joined1=$i.$numberCar;$sql = "DELETE FROM '$joined1'";mysqli_query($con,$sql);

您必须拥有每个 table 的 DROP 权限。 更好解释的link: mySql