繁体   English   中英

从PHP中的mySQL表删除所有行

[英]Delete all rows from mySQL table in PHP

我想通过单击PHP中的“按钮”来删除表中的所有行。 我已经使用了这段代码

<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_* -它已被正式弃用,并且容易注入 切换到使用mysqli_*或PDO准备的语句。
  2. DELETE用于删除行; DROP用于删除表。 您的SQL查询应如下所示:

     $sql = "DROP TABLE `tablename`"; 
  3. 您正在运行查询两次-一次在$sql1 = mysql_query(...) ,一次在if(mysql_query(...)) 对于DROPDELETE查询, 成功时将返回TRUE ,而error将返回FALSE

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

     if(mysql_query($sql)){ 

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


参考文献:

if(mysql_query($sql1)) {

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

相关: 成功的MySQL DELETE返回什么? 如何检查DELETE是否成功?

试试这个代码:

<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();
}

进行以下更改:

<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";
    }
  }
?>

如果要删除表,首先,应创建表临时示例:

$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)";

然后可以删除表,例如:

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

您必须对每个表都具有DROP特权。 更好解释的链接: mySql

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM