一个PHP页面上的多个mysqli删除代码

时间:2017-12-27 00:03:40

标签: php mysqli

我仍然在学习PHP和MySQLI,并且想知道是否有可能在单个php页面上托管多个MySQLI删除查询,并且让url在相应的查询上行动而不会产生混淆。我在这里有这个代码,我已经在网上搜索了3天的答案,但我发现的任何东西似乎都不是我想要的。任何帮助或基于我的代码的适当描述的例子将不胜感激。

我的代码是:

<?php 
session_start();
include ('dbconnect.php');
$userr = $_SESSION['usr_id'];
$uid=$_GET['pid'];
$pid=$_GET['phid'];
$user_id=$_GET['user'];
$fileID=$_GET['file'];
if($userr==$uid && $pid==$fileID){
    echo "ERROR No. 9B2AP";
    }else{
    mysqli_query($con,"delete from images where userID='$uid' AND PhotoID='$pid'") or die (mysqli_error());
    header ("location: /viewImage.php?pid=$uid");
}

if($userr==$user_id && $fileID==$pid){
    echo "ERROR No. 39V41";
    }else{
    mysqli_query($con,"delete from music where userID='$user_id' AND Record_ID='$fileID'") or die (mysqli_error());
    header ("location: /users/music-gallery/$user_id");
}
?>

无论我多少次重写此代码,当我使用此页面上的代码删除图像或歌曲时,它仅将我重定向到/users/music-gallery/而不是正确的关联页面。我怎么能修好这个?就像我说的那样,我是PHP和MySQLI的新手,我相信应该详细描述的任何建议,所以我可能能够理解和理解我是如何犯错的,我要修复并防止它在以后的代码中再次发生。谢谢,麻烦您了。 -M.S

1 个答案:

答案 0 :(得分:2)

出于安全原因,请勿执行此操作:

// Consider escaping the incoming data for better security
$uid=$_GET['pid'];
$pid=$_GET['phid'];
// ...

由于您使用的是MySQLi,因此您可以使用它来转义数据:

$uid = mysqli_real_escape_string($con, $_GET['pid']);

您可以使用FILTERS检查输入数据类型:

// If you are expecting an `INT` from $_GET['pid']
if (filter_var($_GET['pid'], FILTER_VALIDATE_INT))
{
    echo 'pid is an int';
}
else
{
    echo 'pid is not an int';
}

有关过滤器here的更多信息。

最重要的是,prepared mysqli statements使用stmt

// prepare the statement
$stmt = $con->prepare("delete from images where userID=? AND PhotoID=?");
// bind variables to the '?' and set types --> `i` = integer
$stmt->bind_param("ii", $_GET['pid'], $_GET['phid']);
// execute query
$stmt->execute();

// Do the same for the next query

更多关于准备好的陈述here

解决您的问题:

要在标题后面exit添加一个程序,您需要在每个exit();之后使用header,如下所示:

header ("location: /viewImage.php?pid=$uid");
exit();

例如:

header ("location: /viewImage.php?pid=$uid");
// this line of code gets exucuted
// this too
// ...

header ("location: /viewImage.php?pid=$uid");
exit();
// Nothing gets executed as program terminates and redirects