PHP不删除mysql

时间:2015-08-26 22:10:02

标签: php mysql

试图删除像这样的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);

 }
?>

我的表结构:

&#13;
&#13;
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;
&#13;
&#13;

我的主要数据是:

&#13;
&#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;
&#13;
&#13;

2 个答案:

答案 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