Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在mysql中,如何从多个具有相同列名的行中选择一行?_Php_Mysql - Fatal编程技术网

Php 在mysql中,如何从多个具有相同列名的行中选择一行?

Php 在mysql中,如何从多个具有相同列名的行中选择一行?,php,mysql,Php,Mysql,我有一个列名称为的表: id message sender chat_id 我想在while循环获取期间,从具有相同聊天id的行数中获取一行 MySQL查询将是什么如果您只需要一行,那么其中一列需要有唯一数据,这样您就可以将其添加到WHERE子句中 例如,从id=2的信息中选择id、message、sender、chat\u id 从chat\u id=5和sender='mark'的信息中选择id、message、sender、chat\u id 或者在while循环中,匹配列并从中获取您想

我有一个列名称为的表:

id
message
sender
chat_id
我想在while循环获取期间,从具有相同聊天id的行数中获取一行


MySQL查询将是什么

如果您只需要一行,那么其中一列需要有唯一数据,这样您就可以将其添加到WHERE子句中

例如,从id=2的信息中选择id、message、sender、chat\u id

从chat\u id=5和sender='mark'的信息中选择id、message、sender、chat\u id

或者在while循环中,匹配列并从中获取您想要的内容。 但同样,它需要是一个独特的数据组合,否则会被前一个数据覆盖

while($row = $result->fetch_assoc()){
   if($row['sender'] == 'mark' && $row['chat_id'] == '5'){
   $thisIsMyRow = $row['id'];
}

请你再解释一下好吗?你想达到什么目的

假设这是您的查询:

从chat\u id=1的消息中选择id、message、sender、chat\u id

您可能有200行与该查询匹配。为了只返回一个结果,您可以做几件事

如果您想要最新的消息,可以执行以下操作:

从chat\u id=1的消息中选择id、消息、发件人、聊天室id,按id顺序描述限制1

另一个示例,最新5条消息

从chat_id=1的消息中选择id、消息、发件人、chat_id,按id顺序描述限制0,5

此外,当您将其返回到PHP中时,您可以执行以下操作,而不是通过循环:

$row=$result->fetch\u assoc()

因为我们的查询只返回1行,所以不需要循环。当查询返回多个结果时,可以这样做,但最好优化查询

如果你能详细说明,我可以提出更好的建议

while($row = $result->fetch_assoc()){
$query = "SELECT id, message, sender,chat_id FROM messages WHERE Y = X AND Z = $K LIMIT 1";
}

WHERE
部分替换为您想要的任何列

不清楚您想要实现什么。也许一个例子可以帮助我们注意到,没有ORDER BY的LIMIT是毫无意义的——以这种方式在循环中执行查询是一种糟糕的做法,为什么?它仍然会起到限制的作用,不是吗?