我正在尝试使用 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
。还使用准备好的语句来保证安全。
关于php更新MySql记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31489300/