php更新MySql记录

标签 php mysql

我正在尝试使用 PHP 做一个简单的 API 来更新我数据库中记录中的特定列。但是,每当我尝试类似 http://localhost/set_is_open.php?open=0&shop_id=2

的操作时,我都会遇到缺少参数错误

这是我的 API:

<?php
    header('Content-Type: application/json');
    require_once 'db.php';

    if(!isset($_GET["open"]) || empty(trim($_GET["open"])) || !isset($_GET["shop_id"]) || empty(trim($_GET["shop_id"])))
        die(json_encode(array("error" => "Missing request paramters.")));

    $isOpen = trim($_GET["open"]);
    $shop_id = trim($_GET["shop_id"]);

    if(! $conn ) {
        die('Could not connect: ' . mysql_error());
    }

    $sql = 'UPDATE shops
                    SET is_open = isOpen
                    WHERE shop_id = shop_id';

    mysql_select_db('shops');
    $retval = mysql_query( $sql, $conn );
    if(! $retval ) {
        die('Could not update data: ' . mysql_error());
    }
    echo "Updated data successfully\n";
    mysql_close($conn);
?>

我怀疑我可能在语法上做错了什么,但我无法弄清楚。我遵循了本教程 here

最佳答案

问题出在您的 if 条件中。

empty() ,以下内容被认为是空的:

  • ""(空字符串)
  • 0(0 为整数)
  • 0.0(0 作为 float )
  • “0”(0 作为字符串)
  • 错误
  • array()(空数组)
  • 变量$变量; (声明的变量,但在类中没有值)

并且您要插入 open=0&shop_id=2 作为参数,因此此处 open 变量假定为空。

你只需使用,

if(!isset($_GET["open"]) || trim($_GET["open"]) == '' || 
   !isset($_GET["shop_id"]) || trim($_GET["shop_id"] == ''))
    die(json_encode(array("error" => "Missing request paramters.")));

另一点是 mysql 函数已被弃用。最好使用 mysqli_PDO。还使用准备好的语句来保证安全。

阅读: Why shouldn't I use mysql_* functions in PHP?

关于php更新MySql记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31489300/

相关文章:

javascript - 自动双重应用

php - 仅当文件路径具有特定扩展名时才显示数组行

mysql - 在 Solr 中更新索引,错误 : required field in SolrSchema not found in DataConfig

mysql - 选择另一个表中没有外键的主键

php - Magento 模型不会保存值

php - 尝试通过提交按钮更新列值

php - 如何为 Symfony2 中的所有 Controller 添加一些路由前缀?

mysql - 防止注册过程中重复输入

Python3.x如何在进程之间共享一个数据库连接?

javascript - 用Highcharts绘制实时数据图