我有一个MySQL查询,无论何时运行,都会返回3个随机行。我想将每一行存储在一个数组中,该行的每一列都是数组的不同部分。希望我很清楚。这是我到目前为止的地方。
$result = mysql_query("SELECT NAME,AUTHOR,CITY FROM TESTIMONIALS ORDER BY RAND() LIMIT 3");
$row = mysql_fetch_array($result);
这个问题是它在$ result中存储了所有内容,而且我不知道如何在它们存在时引用不同的列。我这样做,所以我最终可以将我想要的指定随机条目打印到9个不同的DIV中。
答案 0 :(得分:2)
尝试:
$array = Array();
$result = mysql_query("SELECT NAME,AUTHOR,CITY FROM TESTIMONIALS ORDER BY RAND() LIMIT 3");
while ($row = mysql_fetch_array($result)) {
$array[] = $row;
}
答案 1 :(得分:1)
您可以使用$row['COLUMNAME']
获取列值
请注意,COLUMNAME将区分大小写。
例如:
$result = mysql_query("SELECT NAME,AUTHOR,CITY FROM TESTIMONIALS ORDER BY RAND() LIMIT 3");
while($row = mysql_fetch_array($result)) {
echo 'Name: ' . $row['NAME'] . '<br/>';
echo 'Author: ' . $row['AUTHOR'] . '<br/>';
}
另外,阅读php.net manual page上的红色通知:
不鼓励使用此扩展程序。
相反,应使用MySQLi或PDO_MySQL扩展名。另请参阅MySQL:选择API指南和相关常见问题解答以获取更多信息。
答案 2 :(得分:0)
考虑使用预准备语句,因为不推荐使用mysql_。如果你粗心或缺乏经验并且没有正确地转义你的查询字符串,它也容易受到SQL注入的影响。
以下是使用mysqli _:
的解决方案$link = mysqli_connect("localhost", "user", "password", "database") or die(mysqli_error($link));
$stmt = mysqli_stmt_init($link);
$query = 'SELECT NAME,AUTHOR,CITY FROM TESTIMONIALS ORDER BY RAND() LIMIT 3';
$arrTestimonials = array();
if (mysqli_stmt_prepare($stmt, $query)) {
mysqli_stmt_bind_result($stmt, $out_name, $out_author, $out_city);
mysqli_stmt_execute($stmt);
while (mysqli_stmt_fetch($stmt)) {
$arrTestimonials[]['name'] = $out_name;
$arrTestimonials[]['author'] = $out_author;
$arrTestimonials[]['city'] = $out_city;
}
} // error preparing statement
数组的结构如下:
Array
(
[0] => Array
(
[name] => Name 1
[author] => Author 1
[city] => City 1
)
[1] => Array
(
[name] => Name 2
[author] => Author 2
[city] => City 2
)
[2] => Array
(
[name] => Name 3
[author] => Author 3
[city] => City 3
)
)