我正在尝试使用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
进行了操作答案 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(),以下内容被视为空:
您正在插入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
。还要使用准备好的语句来保证安全。