我有一个带有简单表格的数据库,名为"渠道"它有2个字段:id和link。我在我的php页面中使用此代码来获取id为1的频道链接:
<!DOCTYPE html>
<html>
<body>
<?php
$db = mysql_connect("localhost", "username", "");
mysql_select_db("my_database", $db);
$result = mysql_query("SELECT link FROM channels WHERE id='1'");
$data = mysql_fetch_array($result);
print $data;
?>
</body>
</html>
但我得到的输出是一个带有文本&#34;数组&#34;的页面。还有别的。 id字段是INT值,链接是TEXT。如何正确获取数据并打印出来?
答案 0 :(得分:1)
除了不安全的东西(可能看mysqli
和PDO
),这就是你访问数据的方式
<?php
$db = mysql_connect("localhost", "username", "");
mysql_select_db("my_database", $db);
$result = mysql_query("SELECT link FROM chhannels WHERE id='1'");
$data = mysql_fetch_array($result);
print $data["link"]; //access the first column of the first row (in this case link)
?>
这只返回第一行。要获取所有行,您必须重复调用mysql_query
while ($row = mysql_fetch_array($result)) {
print $row["link"];
}
答案 1 :(得分:0)
从mysql_fetch_array($result)
返回的是一个数组,表示结果集中的一行。它是一个数组,因为您的结果行上可能有很多列,而不仅仅是示例中的一列。
尝试打印
$data['link']
代替。
有些海报建议循环结果,因为SELECT语句可以返回多行。原则上好主意但在这里误导。 mysql_fetch_array()一次只获得一个结果行(它是一个数组,按列名索引)。如果您期望多个结果,请反复调用mysql_fetch_array(),直到结果为空(mysql_num_rows($ result)为0)。
刚看到另一个问题。你说id列是一个整数值。在这种情况下,您需要将它与整数文字进行比较,而不是与字符串/ varchar / text literal进行比较:
SELECT link FROM channels WHERE id = 1
答案 2 :(得分:0)
你应该创建一个while循环
while ($data = mysql_fetch_array($result)) {
print $data['link'];
}
查看您的查询,您可能只期望一个结果,您可以print $data['link'];