Mysql限制删除检查

时间:2015-11-24 13:56:01

标签: php mysql

我有一个带有限制删除设置的mysql数据库。 我有这个删除查询:

if(isset($_POST['delete_id']))
{
    $sqldelete="DELETE FROM tblAcqDetail WHERE ID=".$_POST['delete_id'];
    $resultdelete = $conn->query($sqldelete);
}

如何检查查询是否删除了任何内容或受mysql限制。

只有删除查询有效时才需要运行更新查询(见下文)。 我试过了:

if ($resultdelete->affected_rows> 0)  {
    // Escape user inputs for security
    $status = mysqli_real_escape_string($link, $_POST['status']);
    if(isset($_POST['status']))
    {
        $setsql="UPDATE tblInvoiceDetail SET TRANSFER = '0' WHERE ID='$status'";
        $setresult = $conn->query($setsql);
    }
}

我也试过

if ($resultdelete->num_rows > 0)  {

还有:

if ($resultdelete)  {

以上所有内容都会阻止执行更新查询。

5 个答案:

答案 0 :(得分:2)

您可以使用mysqli_affected_rows()

来自文档:

  

返回受上一次INSERT,UPDATE,REPLACE或DELETE查询影响的行数。

请注意,这是在连接对象上运行,而不是结果。因此,请使用$conn->affected_rows代替$resultdelete->affected_rows

答案 1 :(得分:1)

不是将$resultdelete传递给mysqli_affected_rows,而是实际上想要传递数据库链接(由mysqli_connect返回),这将为您提供受上一个查询影响的行数

 $sqldelete="DELETE FROM tblAcqDetail WHERE ID=".$_POST['delete_id'];
 $resultdelete = $conn->query($sqldelete);

if ($conn->affected_rows > 0)  {// pass db link here

阅读http://php.net/manual/en/mysqli.affected-rows.php

答案 2 :(得分:1)

您使用if ($resultdelete->affected_rows> 0)错误>0使用int $mysqli->affected_rows;语句与int mysqli_affected_rows ( mysqli $link )位错误。

  • 连接传递给函数,而不是结果集。

RTM num_rows()

面向对象的风格 <?php $mysqli = new mysqli("localhost", "my_user", "my_password", "world"); /* check connection */ if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); } /* Insert rows */ $mysqli->query("CREATE TABLE Language SELECT * from CountryLanguage"); printf("Affected rows (INSERT): %d\n", $mysqli->affected_rows); $mysqli->query("ALTER TABLE Language ADD Status int default 0"); /* update rows */ $mysqli->query("UPDATE Language SET Status=1 WHERE Percentage > 50"); printf("Affected rows (UPDATE): %d\n", $mysqli->affected_rows); /* delete rows */ $mysqli->query("DELETE FROM Language WHERE Percentage < 50"); printf("Affected rows (DELETE): %d\n", $mysqli->affected_rows); /* select all rows */ $result = $mysqli->query("SELECT CountryCode FROM Language"); printf("Affected rows (SELECT): %d\n", $mysqli->affected_rows); $result->close(); /* Delete table Language */ $mysqli->query("DROP TABLE Language"); /* close connection */ $mysqli->close(); ?> Procedural style <?php $link = mysqli_connect("localhost", "my_user", "my_password", "world"); if (!$link) { printf("Can't connect to localhost. Error: %s\n", mysqli_connect_error()); exit(); } /* Insert rows */ mysqli_query($link, "CREATE TABLE Language SELECT * from CountryLanguage"); printf("Affected rows (INSERT): %d\n", mysqli_affected_rows($link)); mysqli_query($link, "ALTER TABLE Language ADD Status int default 0"); /* update rows */ mysqli_query($link, "UPDATE Language SET Status=1 WHERE Percentage > 50"); printf("Affected rows (UPDATE): %d\n", mysqli_affected_rows($link)); /* delete rows */ mysqli_query($link, "DELETE FROM Language WHERE Percentage < 50"); printf("Affected rows (DELETE): %d\n", mysqli_affected_rows($link)); /* select all rows */ $result = mysqli_query($link, "SELECT CountryCode FROM Language"); printf("Affected rows (SELECT): %d\n", mysqli_affected_rows($link)); mysqli_free_result($result); /* Delete table Language */ mysqli_query($link, "DROP TABLE Language"); /* close connection */ mysqli_close($link); ?>

程序风格 openjdk version "1.8.0_66-internal" OpenJDK Runtime Environment (build 1.8.0_66-internal-b17) OpenJDK 64-Bit Server VM (build 25.66-b17, mixed mode)

从手册:

java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)

答案 3 :(得分:1)

你的问题是你引用了错误的东西

if ($conn->affected_rows> 0)  {

但是

var format = moment.localeData().longDateFormat('L') + " " + moment.localeData().longDateFormat("LTS");

enter image description here(强调我的)。

  

失败时返回FALSE。对于成功的SELECT,SHOW,DESCRIBE或EXPLAIN查询,mysqli_query()将返回一个mysqli_result对象。 对于其他成功的查询,mysqli_query()将返回TRUE

您想要引用连接本身以了解受影响的行数

play.api.routing

答案 4 :(得分:1)

如果条件应

  if ($conn->affected_rows> 0){}

不是

  if ($resultdelete->affected_rows> 0){}