php更新MySql记录

时间:2015-07-18 08:31:39

标签: 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

进行了操作

3 个答案:

答案 0 :(得分:1)

替换您当前的查询字符串

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

$sql = "UPDATE shops SET is_open = '$isOpen' WHERE shop_id='$shop_id'"
然后,PHP可以用你之前设置的值替换字符串中的变量。

无论如何,使用mysql API已被弃用,并且以您的方式使用,也不安全。请将PDO或mysqli与预先准备的语句结合使用。

答案 1 :(得分:1)

问题出在if条件:module.exports = new Promise(function(resolve, reject) { fb.me(function(err, me) { if(err) { return reject(err); } fb.my.events(function(err, events) { if(err) { return reject(err); } fb.my.friends(function(err, result){ if(err) { return reject(err); } var data = { me: me, events: events, result, result }; resolve(data); }); }); }); });

empty(trim($_GET["open"]))open=0时,您会收到&#34;缺少参数&#34; 消息。您需要更改或删除该条件。 empty(0) == true可能是进行检查的一个很好的选择。

试试这个:

is_numeric

答案 2 :(得分:1)

问题出在您的if状态。

使用empty(),以下内容被视为空:

  • “”(空字符串)
  • 0(0为整数)
  • 0.0(0作为浮动)
  • “0”(0作为字符串)
  • NULL
  • FALSE
  • 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。还要使用准备好的语句来保证安全。

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