删除 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
关于克服这个问题的任何想法
- 停止使用
mysql_*
- 它是 officially deprecated and vulnerable to injection。切换到使用 mysqli_*
或 PDO 准备语句。
DELETE
用于删除行; DROP
用于删除表。您的 SQL 查询应如下所示:
$sql = "DROP TABLE `tablename`";
您正在 运行查询两次 - 一次在 $sql1 = mysql_query(...)
中,另一次在 if(mysql_query(...))
中。对于 DROP
或 DELETE
查询,it will return TRUE
on success and FALSE
on error.
第二次 运行 查询 (if(mysql_query(...))
) 您查询的是第一个查询 ($sql1
) 的结果,而不是查询本身 ( $sql
)。您应该改写:
if(mysql_query($sql)){
...但改为 PDO/mysqli_
格式。
参考文献:
- The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead
- https://en.wikipedia.org/wiki/SQL_injection
- http://php.net/manual/en/function.mysql-query.php#refsect1-function.mysql-query-returnvalues
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
我想通过单击 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
关于克服这个问题的任何想法
- 停止使用
mysql_*
- 它是 officially deprecated and vulnerable to injection。切换到使用mysqli_*
或 PDO 准备语句。 DELETE
用于删除行;DROP
用于删除表。您的 SQL 查询应如下所示:$sql = "DROP TABLE `tablename`";
您正在 运行查询两次 - 一次在
$sql1 = mysql_query(...)
中,另一次在if(mysql_query(...))
中。对于DROP
或DELETE
查询,it will returnTRUE
on success andFALSE
on error.第二次 运行 查询 (
if(mysql_query(...))
) 您查询的是第一个查询 ($sql1
) 的结果,而不是查询本身 ($sql
)。您应该改写:if(mysql_query($sql)){
...但改为 PDO/
mysqli_
格式。
参考文献:
- The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead
- https://en.wikipedia.org/wiki/SQL_injection
- http://php.net/manual/en/function.mysql-query.php#refsect1-function.mysql-query-returnvalues
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