gpt4 book ai didi

PHP mysqli 查询在连接上返回结果 "1"

转载 作者:行者123 更新时间:2023-11-29 01:53:05 27 4
gpt4 key购买 nike

我一直试图从 php-mysql 中提取一些值,但它返回了一个奇怪的结果“1”。它包含一个带有 where 子句的内部连接,一切正常,但当我尝试 echo 输出 ID 时,结果奇怪地是“1”,但我确信 ID 不是 1。当我在 MySQL CLI 上运行相同的查询时,它返回的正是我需要的,但在 php 中,它甚至没有说有错误。

有趣的是,只有 ID 返回“1”,其他所有内容都返回正确的值。 The ID on the CLI is- "V8FBaMJT6bqPbpRutJgkRdc44S3Gz3H8VjW5iu5E4yhBlLA1/D8o+EcGMUY62LZLrxb2SSkaxBoUwaiQXQv+3OsoDTuheYTy4ibPsy91X8JhNGFjOWM2MWQyMWMxMTBmMTU5YjU5NzU2NGM3OTc1YQ==", so there's no chance that it is equal to "1".

$showPosts = "SELECT * FROM box 
INNER JOIN interactions
ON box.u_id=interactions.actorid
WHERE interactions.actorid=?
AND interactions.type IN ('1','5')
ORDER BY box.time_created";

if ($stmt = $conn->prepare($showPosts)) {
/* bind parameters for markers */
$b = "V8FBaMJT6bqPbpRutJgkRdc44S3Gz3H8VjW5iu5E4yhBlLA1/D8o+EcGMUY62LZLrxb2SSkaxBoUwaiQXQv+3OsoDTuheYTy4ibPsy91X8JhNGFjOWM2MWQyMWMxMTBmMTU5YjU5NzU2NGM3OTc1YQ==";
$stmt->bind_param("s", $b);


/* execute query */
$stmt->execute();

/* bind result variables */
$metaResults = $stmt->result_metadata();
$fields = $metaResults->fetch_fields();
$statementParams = '';

//build the bind_results statement dynamically so I can get the results in an array
foreach($fields as $field){
if(empty($statementParams)){
$statementParams .= "\$post['".$field->name."']";
} else {
$statementParams .= ", \$post['".$field->name."']";
}
}

$statment = "\$stmt->bind_result($statementParams);";
eval($statment);

while($stmt->fetch()){
echo $post['id'];
echo $post['time_created'];
}
}

现在,在结果中——第一个是奇怪的“1”,第二个是时间戳。此外,如果我删除 INNER 连接部分,并执行简单的 SELECT * FROM box,它会完美地返回 ID。我也尝试过执行 stmt->num_rows,它返回“0”。也许我遗漏了一些明显的东西。

我是在 php mysql 中使用连接的新手,在过去的 2 小时里这让我很头疼,感谢任何帮助。谢谢。

最佳答案

问题是您使用 SELECT * FROM ... 返回您正在使用的任何表中的每一列。这不是你想要的。 始终写入您要从查询中读取的列。

在这种情况下,您的结果集中有多个 Id 列,一个来自表 box,另一个来自表 interactions$post['id'] 的值将包含 interactions 表的值。因此,通过编写更改 SELECT 查询:

SELECT box.id, box.time_created FROM ...

此外,不要使用 eval() 函数,永远。您可能希望切换到具有更清晰 API 的 PDO(PDOStatement::fetch 函数将下一行作为数组返回)

关于PHP mysqli 查询在连接上返回结果 "1",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36230650/

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