gpt4 book ai didi

php - PHP SQL 查询中的 JSON 问题

转载 作者:行者123 更新时间:2023-11-30 22:21:58 25 4
gpt4 key购买 nike

我有一个 server.php 文件,它应该返回一个整数表。这些整数中的每一个都链接到一个键(一些整数可以具有相同的键)。该表只需要包含链接到特定键的整数。

要获得其中一个 key ,我需要将另一个 key 作为参数。

所以过程是:

服务器由 $http.post 调用(我正在使用 AngularJS):

$http.post('server.php', {"data" : parameterKey, "serverFlag" : 4})

(serverFlag暂未使用,parameterKey为字符串)

然后我使用 parameterKey 获取另一个 key :

$data = file_get_contents("php://input");
$objData = json_decode($data);

$conn = new PDO(/*something*/);
$outp = [];

$anotherKey = $conn->query("SELECT anotherKey FROM myTable1 WHERE parameterKey = $objData->data");
$anotherKey = $anotherKey ->fetch();

然后,我使用 anotherKey 来收集所有链接到这个键的整数:

$result = $conn->query("SELECT myInt FROM myTable2 WHERE id = $anotherKey  ORDER BY myInt ASC");
while($rs = $result->fetch()) {
if ($outp != "") {
array_push($outp,$rs["myInt"]);
}
}

$outp =json_encode($outp);
echo($outp);

(不知道到这里我说清楚了没。。。)

所以我在运行这个时遇到 JSON 错误:

Error: JSON.parse: unexpected character at line 1 column 1 of the JSON data

我不太确定错误在哪里。有什么想法吗?

编辑

我有以下错误:

Fatal error: Call to a member function fetch() on boolean in C:\wamp64  \www\tests\server.php on line <i>47</i> 
(line 47 = $anotherKey = $anotherKey ->fetch();)

最佳答案

您以错误的方式插入字符串:

$anotherKey  = $conn->query("SELECT anotherKey FROM myTable1 WHERE parameterKey = $objData->data");

请注意您是如何直接调用 $objData->data 的。你应该这样做:

$anotherKey  = $conn->query("SELECT anotherKey FROM myTable1 WHERE parameterKey = {$objData->data}");

在 PHP 中,您只能在字符串中插入变量。如果您指的是对象属性或数组项/字典键,则必须将它们包含在 {} 中。所以这是有效的:

$myInterpolatedString = "This is a string with a $variable";

这是有效的:

$myInterpolatedString = "This is a string with a {$object->property}";

虽然这不是:

$myIncorrectlyInterpolatedString = "This is a string with $object->property";

编辑:从更安全的角度来看,您不应该直接将输入中的任何内容提供给查询,因为您将自己暴露在安全威胁(SQL 注入(inject))之下。考虑使用 prepared statements !

关于php - PHP SQL 查询中的 JSON 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36419631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com