选择并删除行mysqli查询

时间:2017-09-29 16:56:17

标签: php mysql mysqli

我想找到任何行都可以使用提供的参数,并且如果有任何带有mysqli查询的行,则需要删除。我不是PHP开发人员,并试图为我的Android应用程序制作简单的API。我已经编写了如下所示的简单API,但我在$query= mysqli_query($conn,"DELETE FROM tbl_fav WHERE fav_id=");

中感到困惑

我的API如下所示

<?php
header('Content-Type: application/json; Charset=UTF-8');
include("dbconnection.php");
$userid= $_GET['userid'];
$quoteid= $_GET['quoteid'];


$query= mysqli_query($conn,"SELECT fav_id FROM tbl_fav  WHERE  user_id='".$userid."' AND fav_qu_id= '".$quoteid."'");

if(mysqli_num_rows($query) > 0){

$query= mysqli_query($conn,"DELETE FROM tbl_fav WHERE fav_id=");
$response="deleted";

}
else{

$response= "no_data";

}
echo json_encode($response);
?>

让我知道如何删除第一次查询结果中的行。 感谢

5 个答案:

答案 0 :(得分:4)

您需要从第一个查询中获取数据,然后在第二个查询中使用它。使用mysqli_fetch_array()获取

$query= mysqli_query($conn,"SELECT fav_id FROM tbl_fav  WHERE  user_id='".$userid."' AND fav_qu_id= '".$quoteid."'");

if(mysqli_num_rows($query) > 0){

    $row=mysqli_fetch_array($query, MYSQLI_ASSOC); // fetch the data
    $query= mysqli_query($conn,"DELETE FROM tbl_fav WHERE fav_id= $row['fav_id']");
    $response="deleted";

} else {

    $response= "no_data";

}

echo json_encode($response);

获取数据后,您可以在后续查询中使用它。

警告

Little Bobby your script is at risk for SQL Injection Attacks. 了解preparedMySQLi语句。即使escaping the string也不安全!

答案 1 :(得分:0)

使用此代码修改代码块(如果从SELECT查询中获取多条记录,则将$ query替换为$ result。

$result= mysqli_query($conn,"SELECT fav_id FROM tbl_fav  WHERE  user_id='".$userid."' AND fav_qu_id= '".$quoteid."'");

if(mysqli_num_rows($result) > 0)
{   
    while ($row = mysql_fetch_array($result, MYSQL_NUM)) 
    {
        $query= mysqli_query($conn,"DELETE FROM tbl_fav WHERE fav_id=" + $row[0];  
    }
    $response="deleted";
    mysql_free_result($result);
}

答案 2 :(得分:0)

我假设您想获取fav_id并使用该变量删除您要删除的内容。所以这应该是解决方案

tcb *tmp;   // <- definition without initialization
tmp->thread_context = running->thread_context; // <- using

答案 3 :(得分:0)

由于我还没有足够的代表发表评论,我想扩展@Pritesh Patel的回答和一些评论。

假设fav_id是表的主键,完全有可能第一个查询可以返回多个记录。

因此,应该在查询中添加LIMIT 1,或者在结果上使用while循环(因为它在答案中)....并且因为它不能说得太多一次,听一下Little Bobby Tables ..总是防止SQL注入!

答案 4 :(得分:0)

@Priya,请。找到比其他所有解决方案更好的解决方案,如果你只得到1条记录,因为你不同意我之前的回答。当你使用相同的表tbl_fav来操作东西时,你并不需要使事情变得复杂。(它只返回SELECT查询的一条记录)

$query= mysqli_query($conn,"DELETE FROM tbl_fav WHERE  user_id='".$userid."' AND fav_qu_id= '".$quoteid."'");  

另外,请考虑SQL注入。 快乐编码