随机mysql行的PHP问题

时间:2015-01-18 11:31:40

标签: php mysql

我对php有一点问题,基本上我想从我的mysql数据库中获取一个随机行,我是php和mysql的新手,所以请善待并解释我发生了什么。我已经授予了mysql的所有权限,现在我只需要弄清楚发生了什么,我试着把一些回调调试但是好像发生了什么事情,只有一个空白的页面上面没有任何内容,这让我发疯所以我想解决它。这是代码

<?php
echo "test";
$host="127.0.0.1"; // Host name
$username="username"; // Mysql username
$password="password"; // Mysql password
$db_name="mine"; // Database name
$tbl_name="accounts"; // Table name

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
// Select a random account
$min=1;
$row=mysql_fetch_assoc(mysql_query("SHOW TABLE STATUS LIKE 'mine.accounts';"));
$max=$row["Auto_increment"];
$random_id=rand($min,$max);
$row=mysql_fetch_assoc(mysql_query("SELECT * FROM `mine`.`accounts` WHERE id='$random_id'");
echo $row["username"]. ":" . $row["password"]
?>
// --- UPDATE ---
<?php
error_reporting(E_ALL); ini_set('display_errors', 1);
$host="127.0.0.1"; // Host name
$username="username"; // Mysql username
$password="password"; // Mysql password
$db_name="mine"; // Database name
$tbl_name="accounts"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
// Select a random account
$row = mysql_query("SELECT username AND password FROM accounts order by RAND() LIMIT 1");
WHILE ($data = mysql_fetch_array($row))
ENDWHILE;
echo $row['username'] . " " . $row['password'];
?>

1 个答案:

答案 0 :(得分:1)

在这一行,您忘记了右括号。

$row=mysql_fetch_assoc(mysql_query("SELECT * FROM `mine`.`accounts` WHERE id='$random_id'");

因此,当您打开两个时,单个右括号。

$row=mysql_fetch_assoc(mysql_query("SELECT * FROM `mine`.`accounts` WHERE id='$random_id'"));

你必须使用while循环来使$ row输出任何东西,因为fetch_assoc返回一个关联数组:

while($row = mysql_fetch_assoc(<...>){
     $max = $row['Auto_increment'];
}

另外,您可能希望查看Prepared StatementsPDO,因为mysql_ *函数已被正式弃用。