Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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?id从MySQL加载行=*_Php_Mysql_Row - Fatal编程技术网

根据php?id从MySQL加载行=*

根据php?id从MySQL加载行=*,php,mysql,row,Php,Mysql,Row,我对PHP和MySQL相当陌生(对其他语言有经验)。基本上,我想从一行加载数据,该行与URL中声明的id相关。例如,当“index.php?id=3”时加载第三行 到目前为止,我已经做到了以下几点: 我很确定这个问题已经被问了一百万遍了,但我不知道要搜索什么词,到目前为止我还没有找到任何东西:S 谢谢大家最简单的方法是 $id = (int) $_GET['id'];; $result = mysql_query("SELECT * FROM tablename WHERE id=".$id);

我对PHP和MySQL相当陌生(对其他语言有经验)。基本上,我想从一行加载数据,该行与URL中声明的id相关。例如,当“index.php?id=3”时加载第三行

到目前为止,我已经做到了以下几点:

我很确定这个问题已经被问了一百万遍了,但我不知道要搜索什么词,到目前为止我还没有找到任何东西:S

谢谢大家

最简单的方法是

$id = (int) $_GET['id'];;
$result = mysql_query("SELECT * FROM tablename WHERE id=".$id);
while($res = mysql_fetch_object($result)){
    echo $res->columnname;
}

当然,您应该检查输入参数等。这是唯一的方法。

部分
id=3…
称为查询字符串,您可以使用
$\u GET
数组访问它(请参阅)


顺便说一句:从数据库表加载第三行是没有意义的,因为数据库表中的行没有顺序(因此,在这种情况下,一组记录比一个行列表更合适)。记录通常由所谓的主键标识,您必须确保您的数据库表具有主键。

或者如果您更喜欢数组而不是对象,请尝试以下操作:

$query="SELECT * FROM table WHERE id=".(int)$_GET['id']." LIMIT 1";
$result=mysql_query($query);

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    echo $row['column'];
}
或者如果您喜欢索引列

while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
    echo $row[0];
}
或两者(列名和索引):

如果只需要一行,甚至可以使用此选项:

$result = mysql_query("SELECT * FROM table WHERE id=".(int)$_GET['id']);
$row = mysql_fetch_row($result);
echo $row[0];

基于所有这些不太清楚但有效的示例,您可以创建一个函数

function getRow($query){
  $res = mysql_query($query);
  if (!$res) {
    trigger_error(mysql_error." in ".$query);
    return array();
  }
  $row = mysql_fetch_assoc($res));
  if ($row) return $row;
  return array();
}
然后将其存储到某个库文件中,然后将该文件包含到脚本中,并用一行代码调用

$data = getRow("SELECT * FROM tablename WHERE id=".intval($_GET['id']));
还要注意奥斯瓦尔德的笔记,这非常重要。不能也不应该依赖行的相对位置,因为根本没有位置。DB表是一个堆,而不是有序列表。
使用特定的唯一字段值来寻址特定行。这是一个带有代码链接的清晰问题的解决方法。我现在没有时间回答所有问题,但我会告诉您,您可以使用
$id=(int)$\u get['id']从查询字符串中获取id。祝你好运先生,您是一位绅士和学者:)就是这样!您还可以阅读php.net上mysql函数的文档。例如,您可以在这里找到mysql\u fetch\u对象页,或者您可以使用
SELECT*FROM.OFFSET.$\u GET['id']
LIMIT 1?因为他在第三排打了什么,我们不知道他是否在他的表中存储了id。这似乎是不必要的here@poelinca不,这是错误的语法,完全没有必要。是的,正如Oswald在上面所写的,您应该在表中添加新列(例如,名为“id”)以对记录进行排序。您应该添加到此列”auto_increment”属性,并将其作为提高性能的主键。之后,当您在表中插入新行时,此行将获得自己的id值。
$data = getRow("SELECT * FROM tablename WHERE id=".intval($_GET['id']));