Php 在MySQL中,从相同(随机)记录中选择两列的最快方法是什么?

Php 在MySQL中,从相同(随机)记录中选择两列的最快方法是什么?,php,mysql,sql,Php,Mysql,Sql,我想从同一条记录中随机检索一对列。我听说兰德效率很低,所以我想用另一种方式。(许多文章都声称如此,包括) 所以,是的,我的头衔几乎说明了一切。 例子: 记录: 12、詹姆斯、单簧管、鸡肉 16、比利、鼓、培根 15岁,肖恩,吉他,披萨 系统将随机选取一条记录。那就好了 echo“一个叫$firstname的男孩喜欢$favoritefood” 差不多吧。帮助?这个怎么样 select ... from tableT limit $i,1 $i应该是介于0和平板电脑中的行数之间的随机数这个怎么办

我想从同一条记录中随机检索一对列。我听说兰德效率很低,所以我想用另一种方式。(许多文章都声称如此,包括)

所以,是的,我的头衔几乎说明了一切。 例子: 记录:
12、詹姆斯、单簧管、鸡肉
16、比利、鼓、培根
15岁,肖恩,吉他,披萨

系统将随机选取一条记录。那就好了 echo“一个叫$firstname的男孩喜欢$favoritefood”

差不多吧。帮助?

这个怎么样

select ... from tableT limit $i,1
$i应该是介于0和平板电脑中的行数之间的随机数

这个怎么办

select ... from tableT limit $i,1

$i应该是介于0和tableT中的行数之间的随机数

关于SQL注入的标准免责声明。这应该行得通,但我没有尝试:

// Get the number of rows in the table
$count = mysql_fetch_assoc(mysql_query('SELECT COUNT(`id`) AS `count` FROM `table`'));
// Use those to generate a random number
$rand = rand(1,$count['count']);
// Select the two columns we need, and use limit to set the boundaries
$query = 'SELECT `firstName`, `favoriteFood` FROM `table` LIMIT '.$rand.',1';
// Run the query
if(($result = mysql_query($query)) !== FALSE) {
    // Dump the result into two variables
    list($firstname, $favoritefood) = mysql_fetch_assoc($result);
    // Echo out the result
    echo 'A boy named '.$firstname.' likes '.$favoritefood;
}

关于SQL注入的标准免责声明。这应该行得通,但我没有尝试:

// Get the number of rows in the table
$count = mysql_fetch_assoc(mysql_query('SELECT COUNT(`id`) AS `count` FROM `table`'));
// Use those to generate a random number
$rand = rand(1,$count['count']);
// Select the two columns we need, and use limit to set the boundaries
$query = 'SELECT `firstName`, `favoriteFood` FROM `table` LIMIT '.$rand.',1';
// Run the query
if(($result = mysql_query($query)) !== FALSE) {
    // Dump the result into two variables
    list($firstname, $favoritefood) = mysql_fetch_assoc($result);
    // Echo out the result
    echo 'A boy named '.$firstname.' likes '.$favoritefood;
}

您是否尝试在给定行(或两者)中随机查找行或列?“随机查找列”的唯一方法是在中间层。SQL语言不是为动态列生成而设计的。嗯,如果是这样的话,做我要问的事情的最佳方法是什么?正如你所知,你标记为答案的解决方案只是找到一个随机行。这显然不同于从一个随机行中抽取一个随机列。@Thomas这是用户要求的。他想从随机记录(或行)中选择两列(由$firstname和$favoritefood表示)。@dragonmantank-同意。我现在注意到了编辑。原始版本暗示需要一个随机列,但事实似乎并非如此。您是在尝试随机查找一行还是在给定行中随机查找一列(或两者)?“随机查找列”的唯一方法是在中间层。SQL语言不是为动态列生成而设计的。嗯,如果是这样的话,做我要问的事情的最佳方法是什么?正如你所知,你标记为答案的解决方案只是找到一个随机行。这显然不同于从一个随机行中抽取一个随机列。@Thomas这是用户要求的。他想从随机记录(或行)中选择两列(由$firstname和$favoritefood表示)。@dragonmantank-同意。我现在注意到了编辑。原始版本暗示了想要一个随机列的想法,但事实似乎并非如此。对不起,我没有真正了解如何使用此获取特定列对。对不起,我没有真正了解如何使用此获取特定列对。对不起,我睡着了。不过我很快就会试试这个。它看起来很漂亮!但是,你能告诉我更多关于如何防止攻击的信息吗?通常,你会在创建查询所用的任何变量上使用mysql\u real\u escape\u字符串。找到计数是非常安全的,因为结果总是一个数值,但安全是没有坏处的。为了更安全,你也可以使用PDO和预处理语句。对不起,我睡着了。不过我很快就会试试这个。它看起来很漂亮!但是,你能告诉我更多关于如何防止攻击的信息吗?通常,你会在创建查询所用的任何变量上使用mysql\u real\u escape\u字符串。找到计数是非常安全的,因为结果总是一个数值,但安全是没有坏处的。为了更加安全,还可以使用PDO和预处理语句。