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);
?>

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

Bhavesh G

问题在于您的if状况。

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

  • “”(空字符串)
  • 0(0为整数)
  • 0.0(0为浮点数)
  • “ 0”(0作为字符串)
  • 无效的
  • 错误的
  • array()(一个空数组)
  • var $ var; (已声明变量,但类中没有值)

而且您要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最好。还要使用准备好的语句来保证安全性。

阅读:为什么我不应该在PHP中使用mysql_ *函数?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章