2013-02-20 111 views
0

基本上如我的问题所述,它适用于phpmyadmin,但不适用于php本身。当我运行脚本时,它会返回true,并且不会死亡。帮帮我!mysql DELETE在phpmyadmin上工作,但不在php脚本上

这里是查询:

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|selectorID|selectedID 
3 1   4 
4 1   5 
+0

如果它在phpmyadmin工作,而不是在PHP我的猜测是你的变量不包含你期望他们的值。您还需要将其分解为最简单的用例场景,以便于进行故障排除。 – 2013-02-20 15:09:17

+1

你知道你的代码在sql注入的情况下非常不安全吗?在传递给你的sql查询之前,你应该验证从'$ _GET'得到的所有数据。 – oktopus 2013-02-20 15:12:13

回答

2

你的第一次,但较小的麻烦是case sensitive nature of PHP variables

这里

$sqlInsert = mysql_query("DELETE FROM selections WHERE selectorID = '$userID' AND selectedID = '$ID'") or die (mysql_error()); 

您参考$ID,但只有$id

$id = $_GET['ID']; 

正确:

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

重要提示

尽管这很可能会起作用,但这很容易出现SQL injection!改用PDO,或者至少,escape你的价值观!

+0

好吧。这就是为什么您无法开发禁用完全错误报告的PHP代码。 – 2013-02-20 15:14:08

+0

谢谢!我是一个经验丰富的程序员,我感到非常愚蠢。但我想我仍然会错过一些事情。至于SQL注入,我总是构建我的脚本并让它们工作,然后返回并修复所有的漏洞。 – 2013-02-20 15:15:56

+0

@ÁlvaroG.Vicario是的...这样的问题,他们的回忆让我皱眉头,当我不得不面对PHP ... – ppeterka 2013-02-20 15:16:32

相关问题