试图删除像这样的mysql中的一行,但它无法正常工作。 它回应"未能删除"。
我不知道代码有什么问题。 任何建议都会受到欢迎。
<?php
error_reporting(0);
include("db_config.php");
// array for JSON response
$response = array();
if( isset($_GET['id'] ) ) {
$id=$_GET['id'];
$data=$_GET['data'];
$item=$_GET['item'];
$time=$_GET['time'];
$result = mysql_query("delete from myorder where id='$id' ");
$row_count = mysql_affected_rows();
if($row_count>0){
$response["success"] = 1;
$response["message"] = "Deleted Sucessfully.";
}
else{
$response["success"] = 0;
$response["message"] = "Failed To Delete";
}
// echoing JSON response
echo json_encode($response);
}
?>
我的表结构:
CREATE TABLE `myorder` (
`id` int(100) NOT NULL AUTO_INCREMENT,
`data` varchar(20) NOT NULL,
`item` varchar(255) DEFAULT NULL,
`time` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=27 ;
&#13;
我的主要数据是:
INSERT INTO `myorder` VALUES(23, '500MB', 'safaricom \nsteve\n0715611306', '11:32 PM 26 Aug, 2015 ');
INSERT INTO `myorder` VALUES(24, '4GB', 'safaricom \nsteve\n0715611306', '00:30 AM 27 Aug, 2015 ');
INSERT INTO `myorder` VALUES(25, '9\nGB', 'airtel \nsteve\n0715611306', '00:31 AM 27 Aug, 2015 ');
INSERT INTO `myorder` VALUES(26, '9\nGB', 'airtel \nsteve\n0715611306', '00:31 AM 27 Aug, 2015 ');
&#13;
答案 0 :(得分:1)
在查询中从$ id周围取出引号,并在以后连接。
$sql = "DELETE FROM myorder WHERE id = ".$id;
编辑:正如评论所提到的,在查询中使用它们之前应该清理变量以防止sql注入。
我建议首先停止使用mysql_,因为它不再受支持并切换到mysqli_或PDO。我个人更喜欢PDO。
以下是有关SQL注入How can I prevent SQL injection in PHP?
的所有帖子的链接答案 1 :(得分:0)
因为这是我假设一个从AJAX调用运行的脚本,你将无法使用简单的echo
语句对其进行调试,所以试试这个,然后用broswer调试器看看是什么发送到JSON中的浏览器。
查看db_config.php
<?php
error_reporting(0);
include("db_config.php");
// array for JSON response
$response = array();
if( isset($_GET['id'] ) ) {
$id=$_GET['id'];
//$data=$_GET['data']; // not tested for so dont use
//$item=$_GET['item']; // not tested for so dont use
//$time=$_GET['time']; // not tested for so dont use
$sql = "delete from myorder where id=$id";
$result = mysql_query($sql);
// you shoud always be checking error status after this command.
if ( ! $result ) {
$response['mysql_query'] = $sql;
$response['mysql_error'] = mysql_error();
echo json_encode($response);
exit;
}
$row_count = mysql_affected_rows();
$response['affectedRows'] = mysql_affected_rows();
if($row_count>0){
$response["success"] = 1;
$response["message"] = "Deleted Sucessfully.";
} else {
$response["success"] = 0;
$response["message"] = "Failed To Delete";
}
// echoing JSON response
echo json_encode($response);
}
?>
另外,因为你显然只是学习PHP和MYSQL,请不要浪费你的时间学习
mysql_
数据库扩展,它已被删除(在PHP7中很快被删除)。而是更有效地利用您的时间并学习mysqli_
或PDO
扩展。请参阅this post for help in deciding which you prefer。