PHP mysqli查询返回结果“;1“;关于连接
我一直在尝试从php mysql中提取一些值,它返回了一个奇怪的结果“1”。它包含一个带有where子句的内部连接,一切正常,但当我尝试PHP mysqli查询返回结果“;1“;关于连接,php,mysql,Php,Mysql,我一直在尝试从php mysql中提取一些值,它返回了一个奇怪的结果“1”。它包含一个带有where子句的内部连接,一切正常,但当我尝试回显ID时,结果奇怪地是“1”,但我确信ID不是1。当我在MySQL CLI上运行相同的查询时,它会返回我所需要的内容,但在php中,它甚至不会说有错误 有趣的是,只有ID返回“1”,其他所有内容都返回正确的值。CLI上的ID是-“V8FBaMJT6bqPbpRutJgkRdc44S3Gz3H8VjW5iu5E4yhBlLA1/D8o+ecgmuy62lzlrx
回显ID时,结果奇怪地是“1”,但我确信ID不是1。当我在MySQL CLI上运行相同的查询时,它会返回我所需要的内容,但在php中,它甚至不会说有错误
有趣的是,只有ID返回“1”,其他所有内容都返回正确的值。CLI上的ID是-“V8FBaMJT6bqPbpRutJgkRdc44S3Gz3H8VjW5iu5E4yhBlLA1/D8o+ecgmuy62lzlrxb2skaxbouwaiqxqv+3osodtuhey4ibpsy91x8jhngfjowm2mwqymwmxmtbmtu5yju5nzu2ngm3otc1yq=”
,因此它不可能等于“1”
现在,在结果中-第一个是奇怪的“1”,第二个是时间戳。
此外,如果我删除内部连接部分,并执行一个简单的SELECT*FROM框
,它将完美地返回ID。我还试着做了一个stmt->num_rows
,它返回“0”。也许我错过了一些明显的东西
我刚开始在php mysql中使用连接,在过去的两个小时里,这对我来说是一个很大的难题,非常感谢您的帮助。
谢谢。问题是您使用了SELECT*FROM…
,它返回您正在使用的任何表中的每一列。这不是你想要的始终写入要从查询中读取的列
在这种情况下,结果集中有多个Id
列,一个来自表框
,另一个来自表交互
。$post['id']
的值将包含交互
表的值。因此,通过编写以下内容更改SELECT查询:
SELECT box.id, box.time_created FROM ...
另外,不要使用eval()
函数ever。您可能希望切换到具有更清晰API的PDO(该函数以数组形式返回下一行)经过几个小时的研究,我找到了一个工作示例,它工作得很好。
其他人将来可能会面临同样的问题并犯错误,因此我在这里发布了一个问题的答案:
问题:
在两个联接表中具有相同的列名
第一个问题是表交互的列名id
与表框的列名相同。由于我使用了SELECT*FROM-box
和交互的内部连接,因此它基于第二个id
返回结果,该id是交互而不是box
在显示记录计数之前不存储结果
其次,问题是结果没有存储为,这是一个愚蠢的错误
解决:
- 对列报告进行寻址
因此,首先我决定更改id
的表interactions的列名,并将其更改为inter\u id
,以避免进一步的冲突。虽然这不是一个非常明智的步骤,但它将在未来避免此类愚蠢的错误。然后,正如前面的答案所指出的,我必须指定要输出的结果的列名,而不是使用SELECT*
,因此我将其更改为
SELECT box.id, box.time_created 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";
这基本上解决了第一个问题
- 计算结果的数量
第二个是关于添加$stmt->store_result()在我做一个echo$stmt->num_行之前,它完美地工作了代码>并且它完美地显示了结果
再次感谢您。您有任何PHP错误吗?没有,没有错误@MatthewHerbstHmm,我觉得您应该有。您在绑定后定义了b
,因此我怀疑interactions.actorid
是否在$stmt->bind_param(“s”,$b)中
实际上具有正确的值。我在绑定它后尝试过,但无效。这肯定是正确的值,我运行了相同的查询,用$b
的值重放了“?”,它返回了我想要的结果。@coderdutewodee为什么要这样使用eval<代码>$station=“\$stmt->bind\u result($statementParams);”;eval($statment)代码>这毫无意义…是的,我知道了。但是如何解决显示行数的问题呢?输出按需要返回,但当echo
-ing$stmt->num\u行时,我仍然得到0
@CoderDudeTwodee如上所述,您必须致电。同样,我已经自己解决了我的问题,但无论如何,谢谢。:)
SELECT box.id, box.time_created 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";