【问题标题】:How to fetch information from database, from current position?如何从当前位置从数据库中获取信息?
【发布时间】:2015-02-03 05:42:34
【问题描述】:

我是初学者,对如何从当前位置从数据库获取信息有点困惑。举个例子,在 DATABASE 中:三行..id(主键)、userid 和 info,并且有近 400 个 id 的数据。

现在假设用户输入 userid: abc,它在 id 的第 120 位。

我想在第 120 位之后显示所有 ids and userids。比如说从第 121 个 id 到第 400 个 id。

我为此创建了一个代码,但它根本不起作用。请帮助并提前致谢。

代码:

<?php
if(isset($_POST['submit']))
{
      $userid=$_POST['refuserid'];
$sql = "SELECT id, userid, fullname FROM personal WHERE > (select id from personal where userid='$userid')";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result))
{
$i=1;
while($row = mysqli_fetch_assoc($result)) 
    {

       echo "<tr>";

       echo "<td>" .$row["id"]. "</td>";
       echo "<td>" .$row["userid"]. "</td>";
       echo "<td>" .$row["fullname"]. "</td>";

$i++;      
       }
} else {
    echo "0 results";
}
  }
?>  <form action="" method="post">
  <input type="text" name="refuserid" />
  <input type="submit" name="submit" value="Submit" />
   </form>

连接:

<?php
$conn=mysqli_connect("localhost","root","", "gold99");
?>

谢谢。

【问题讨论】:

  • 旁注:您将 MySQL API 与需要读取为 mysqli_error($conn)MYSQL_NUMMYSQLI_NUMmysql_error() 混合使用。你不能把这两者混在一起。
  • @Fred-ii- 我更正了代码...但再次无法正常工作
  • 您是否依赖 $data['id'] 获取您在表单中输入的 ID? &lt;input type="text" name="id" /&gt;
  • @AnkitBhatanagar ,你说的,你在这个表中检索匹配 userid='abc' 或 xyz、mno 等其他用户 ID 之后的所有行?
  • @Fred-ii- 我以为你有点困惑。实际上,我想要所有低于给定用户 ID 的数据。 ABC 只是一个例子。如果我在 ABC 以下有 200 多条记录,我将如何显示?这就是问题,很简单。

标签: php mysql sql select exists


【解决方案1】:

试试这个join查询

$sql = "SELECT a.id, a.userid, a.fullname FROM personal as a INNER JOIN personal as b ON a.id > b.id AND b.userid = 'abc'";

【讨论】:

  • @AnkitBhatanagar 我更新了我的答案,请尝试用我的答案替换您的查询
  • 请将答案标记为已接受答案。很高兴为您提供帮助:) :)
【解决方案2】:

试试下面的代码

$sql = "SELECT id, userid FROM personal where id > (SELECT id FROM personal where userid = 'abc')";
$data = mysqli_query($conn,$sql);

【讨论】:

  • 给出错误:致命错误:不能使用 mysqli_result 类型的对象作为数组
  • 它不是查询错误尝试下面的代码 $sql = "SELECT id,cat_name FROM primary_category where id > (SELECT id FROM primary_category where cat_name = 'Travel')"; $data = $cons->查询($sql); $data = $data->fetch_array(MYSQLI_ASSOC); foreach($data as $val){ echo $data['id']; }
【解决方案3】:

试试这个查询:

$ID = $_POST['id'];
$sql = "SELECT id, userid FROM personal WHERE id > (SELECT id FROM personal WHERE userid = '{$ID}')";
$data = mysqli_query($conn,$sql);

【讨论】:

  • 但是如何回显该 id 下面的所有记录..?
  • @AnkitBhatanagar 你的问题是说你想显示某个 id 之后的所有记录,这段代码只会这样做。你还想展示什么?
  • 我以为你有点困惑。实际上,我想要所有低于给定用户 ID 的数据。 ABC 只是一个例子。如果我在 ABC 以下有 200 多条记录,我将如何显示?这就是问题,很简单。
  • @AnkitBhatanagar 然后你应该编辑你的问题,它说“我想在第 120 个位置之后显示所有 ids and userids。比如说从第 121 个 id 到第 400 个 id”。无论如何,如果想要 ABC 下面的记录,那么只需将大于号改为小于号。希望对您有所帮助。
  • 警告:mysqli_num_rows() 期望参数 1 为 mysqli_result,第 49 行给出的布尔值。
【解决方案4】:

试试这个:

SELECT p.id, p.userid 
FROM personal p 
WHERE EXISTS (SELECT 1 
              FROM personal p1 
              WHERE p.id > p1.id AND p1.userid = 'abc'
             );

【讨论】:

  • 但是 p.id 和 p.userid 是什么。其实这里的“p”是什么意思?
猜你喜欢
  • 1970-01-01
  • 2020-04-15
  • 2012-11-30
  • 1970-01-01
  • 1970-01-01
  • 2012-10-31
  • 2016-09-03
  • 1970-01-01
相关资源
最近更新 更多