无法使用PHP打印数据库值

时间:2015-11-24 16:36:47

标签: php mysql database

我有一个带有简单表格的数据库,名为"渠道"它有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。如何正确获取数据并打印出来?

3 个答案:

答案 0 :(得分:1)

除了不安全的东西(可能看mysqliPDO),这就是你访问数据的方式

<?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'];