mysql DELETE可以在phpmyadmin上工作,但不能在php脚本上工作

mysql DELETE可以在phpmyadmin上工作,但不能在php脚本上工作,php,mysql,Php,Mysql,基本上正如我的问题所述,它可以在phpmyadmin上工作,但不能在php本身上工作。当我运行脚本时,它返回true,并且不会消失。救命啊 以下是查询: DELETE FROM selections WHERE selectorID = '$userID' AND selectedID = '$ID' 以下是php脚本: <?php include_once "connect_to_mysql.php"; $errorB = false; $error = ''; $id = ''

基本上正如我的问题所述,它可以在phpmyadmin上工作,但不能在php本身上工作。当我运行脚本时,它返回true,并且不会消失。救命啊

以下是查询:

DELETE FROM selections WHERE selectorID = '$userID' AND selectedID = '$ID'
以下是php脚本:

<?php

include_once "connect_to_mysql.php";

$errorB = false;

$error = '';
$id = '';
$userID = '';
if (empty($_GET['ID']) || empty($_GET['userID'])) {
$errorB = true;

if (empty($_GET['ID'])) {
    $error = $error.'-No selected ID was sent';

}

if (empty($_GET['userID'])) {
    $error = $error.'-No selector ID was sent';

}


} else {
$id = $_GET['ID'];
$userID = $_GET['userID'];
echo $id.$userID;
$sqlInsert = mysql_query("DELETE FROM selections WHERE selectorID = '$userID' AND selectedID = '$ID'") or die (mysql_error());
echo 'shz';
}

if ($errorB) {
echo $error;

}



?>

您的第一个问题,但较小的问题是:

这里

您引用了
$ID
,但只有
$ID

$id = $_GET['ID'];
正确地说:

$sqlInsert = mysql_query("DELETE FROM selections WHERE selectorID = '$userID' AND selectedID = '$id'") or die (mysql_error());
重要提示


虽然这很可能会起作用,但这很容易!改用PDO,或者至少是你的价值观

如果它在phpmyadmin中工作,而不是在php中工作,我猜您的变量不包含您期望的值。您还需要将其分解为最简单的用例场景,以便更容易地进行故障排除?您应该验证从
$\u get
获取的所有数据,然后再将它们传递到sql查询中。这就是为什么您不能在禁用完整错误报告的情况下开发PHP代码。谢谢!我觉得自己很愚蠢,因为我是一个经验丰富的程序员。但我想我还是会想念一些东西。至于SQL注入,我总是构建我的脚本并让它们工作,然后返回并修复所有漏洞。@alvarog.Vicario是的。。。当我不得不处理PHP的时候,这些问题和它们重现的记忆让我皱眉…@MichaelKing,不客气。我也经常遇到这种情况:)但我衷心建议在处理安全问题时不要采用“回去解决它”的方法。对于性能优化,这是要遵循的路线,但对于安全性,你会失去很多…@MichaelKing-这就是为什么我讨厌他们称之为“安全性”的原因-它让人们认为,“嘿,我不需要它”。如果要生成PDF文件,则需要确保它是有效的PDF文件。如果要生成SQL,则需要确保它是有效的SQL。
$id = $_GET['ID'];
$sqlInsert = mysql_query("DELETE FROM selections WHERE selectorID = '$userID' AND selectedID = '$id'") or die (mysql_error());