我想通过单击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 droppedn";
} else {
echo 'Error dropping database: ' . mysql_error() . "n";
}
}
?>
但毁了之后说:Error dropping database: Query was empty
关于克服这个问题的任何想法
- 停止使用
mysql_*
- 它已正式弃用并且容易受到注入。切换到使用mysqli_*
或 PDO 预准备语句。 -
DELETE
用于删除行;DROP
用于删除表。您的 SQL 查询应如下所示:$sql = "DROP TABLE `tablename`";
-
您正在运行查询两次 - 一次在
$sql1 = mysql_query(...)
中,一次在if(mysql_query(...))
中。对于DROP
或DELETE
查询,它将在成功时返回TRUE
,在出错时返回FALSE
。 -
第二次运行查询(
if(mysql_query(...))
(时,您查询的是第一个查询的结果($sql1
(,而不是查询本身($sql
(。你应该写:if(mysql_query($sql)){
。而是以 PDO/
mysqli_
格式代替。
引用:
- mysql 扩展已被弃用,将来将被删除:改用 mysqli 或 PDO
- https://en.wikipedia.org/wiki/SQL_injection
- http://php.net/manual/en/function.mysql-query.php#refsect1-function.mysql-query-returnvalues
试试这段代码:
<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: %sn", mysqli_connect_error());
exit();
}
$sql = 'DELETE FROM tbl_fordelete';
$sql1=mysqli_query($connection, $sql);
if ($sql1) {
echo "Database dqqwewrw was successfully droppedn";
} else {
echo 'Error dropping database: ' . mysql_error() . "n";
}
$connection->close();
}
if(mysql_query($sql1)) {
这是错误的。$sql 1 由 mysql_query(( 返回,因此它不是一个查询,而是一个结果。
相关:成功的MySQL DELETE返回什么?如何检查删除是否成功?
执行以下更改:
<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 droppedn";
} 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 特权。更好地解释的链接:我的SQLl