Php 生成100个10位随机数并保存到数据库
这是一个非常简单的函数,但它总是给我错误。我正在编写一个脚本来生成100个10位数的随机数,但我一直有这样的错误:“请查看与MySQL服务器版本相对应的手册,以了解第1行附近使用的正确语法 这是我的密码Php 生成100个10位随机数并保存到数据库,php,mysql,random,Php,Mysql,Random,这是一个非常简单的函数,但它总是给我错误。我正在编写一个脚本来生成100个10位数的随机数,但我一直有这样的错误:“请查看与MySQL服务器版本相对应的手册,以了解第1行附近使用的正确语法 这是我的密码 <?php $cxn = new mysqli("localhost", "CJroot", "password", "random"); /* check connection */ if (mysqli_connect_errno()) { printf("Connect f
<?php
$cxn = new mysqli("localhost", "CJroot", "password", "random");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
for ($i=0; $i < 100; $i++) {
$sql = "INSERT INTO random (random) VALUES 'rand(1111111111, 9999999999)'";
if(!mysqli_query($cxn,$sql)) {
die("Error: ".mysqli_error($cxn));
}
}
/* close connection */
$cxn->close();
?>
您需要像这样压缩字符串
$sql = "INSERT INTO random (random) VALUES '" . rand(1111111111, 9999999999) . "'";
你需要像这样把你的绳子绷紧
$sql = "INSERT INTO random (random) VALUES '" . rand(1111111111, 9999999999) . "'";
您也可以直接使用MySQL执行此操作,如下所示:
INSERT INTO random (random)
SELECT CAST( (RAND()*(9999999999-1111111111)) AS UNSIGNED) + 1111111111;
INSERT INTO random (random) VALUES ( FLOOR(1000000000 + RAND() * 9000000000) )
或对于100行:
INSERT INTO random (random)
SELECT CAST( (RAND()*(9999999999-1111111111)) AS UNSIGNED) + 1111111111 AS random FROM (
SELECT 0 AS h UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
) h
CROSS JOIN
( SELECT 0 AS l UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 ) l;
您也可以直接使用MySQL执行此操作,如下所示:
INSERT INTO random (random)
SELECT CAST( (RAND()*(9999999999-1111111111)) AS UNSIGNED) + 1111111111;
INSERT INTO random (random) VALUES ( FLOOR(1000000000 + RAND() * 9000000000) )
或对于100行:
INSERT INTO random (random)
SELECT CAST( (RAND()*(9999999999-1111111111)) AS UNSIGNED) + 1111111111 AS random FROM (
SELECT 0 AS h UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
) h
CROSS JOIN
( SELECT 0 AS l UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 ) l;
MySQL抱怨的语法错误(在您的SQL语句中)在值列表中缺少参数。这是无效的:
INSERT INTO ... VALUES 'foo'
应该是
INSERT INTO ... VALUES ( 'foo' )
^ ^
一旦您克服了这个困难,单引号中的值将被解释为字符串文字。在示例代码中,'rand(11111 99999)
是一个文字,一个字符串。它不是对函数的引用
如果我们想使用MySQLRAND()
函数,我们可以这样做:
INSERT INTO random (random)
SELECT CAST( (RAND()*(9999999999-1111111111)) AS UNSIGNED) + 1111111111;
INSERT INTO random (random) VALUES ( FLOOR(1000000000 + RAND() * 9000000000) )
我们可以执行100次,或者,编写返回100行的SELECT语句,并在一次插入中插入100行,效率会更高
或:
就数据库性能而言,运行一条插入100行的INSERT语句通常比执行100条单独的INSERT语句效率更高。处理RBAR(一行一行)的速度可能非常慢
如果需要一个循环,如果我们一次插入四行,我们只需要遍历循环25次,我们需要执行的语句就减少了75%
我们可以在循环之外指定只执行一次的SQL文本,然后重复执行相同的SQL
$sql = "INSERT INTO random (random) VALUES"
. " ( FLOOR(1000000000 + RAND() * 9000000000) )"
. ",( FLOOR(1000000000 + RAND() * 9000000000) )"
. ",( FLOOR(1000000000 + RAND() * 9000000000) )"
. ",( FLOOR(1000000000 + RAND() * 9000000000) )";
for ($i=0; $i < 25; $i++) {
if(!mysqli_query($cxn,$sql)) {
die("Error: ".mysqli_error($cxn));
}
}
$sql=“插入随机(随机)值”
.“(地板(100000000+兰特()*900000000))”
“,(底价(100000000+兰特()*900000000))”
“,(底价(100000000+兰特()*900000000))”
“,(底价(100000000+兰特()*900000000))”;
对于($i=0;$i<25;$i++){
if(!mysqli_query($cxn,$sql)){
死(“错误:.mysqli_错误($cxn));
}
}
MySQL抱怨的语法错误(在您的SQL语句中)缺少值列表周围的参数。这是无效的:
INSERT INTO ... VALUES 'foo'
应该是
INSERT INTO ... VALUES ( 'foo' )
^ ^
一旦您克服了这个困难,单引号中的值将被解释为字符串文字。在示例代码中,'rand(11111 99999)
是一个文字,一个字符串。它不是对函数的引用
如果我们想使用MySQLRAND()
函数,我们可以这样做:
INSERT INTO random (random)
SELECT CAST( (RAND()*(9999999999-1111111111)) AS UNSIGNED) + 1111111111;
INSERT INTO random (random) VALUES ( FLOOR(1000000000 + RAND() * 9000000000) )
我们可以执行100次,或者,编写返回100行的SELECT语句,并在一次插入中插入100行,效率会更高
或:
就数据库性能而言,运行一条插入100行的INSERT语句通常比执行100条单独的INSERT语句效率更高。处理RBAR(一行一行)的速度可能非常慢
如果需要一个循环,如果我们一次插入四行,我们只需要遍历循环25次,我们需要执行的语句就减少了75%
我们可以在循环之外指定只执行一次的SQL文本,然后重复执行相同的SQL
$sql = "INSERT INTO random (random) VALUES"
. " ( FLOOR(1000000000 + RAND() * 9000000000) )"
. ",( FLOOR(1000000000 + RAND() * 9000000000) )"
. ",( FLOOR(1000000000 + RAND() * 9000000000) )"
. ",( FLOOR(1000000000 + RAND() * 9000000000) )";
for ($i=0; $i < 25; $i++) {
if(!mysqli_query($cxn,$sql)) {
die("Error: ".mysqli_error($cxn));
}
}
$sql=“插入随机(随机)值”
.“(地板(100000000+兰特()*900000000))”
“,(底价(100000000+兰特()*900000000))”
“,(底价(100000000+兰特()*900000000))”
“,(底价(100000000+兰特()*900000000))”;
对于($i=0;$i<25;$i++){
if(!mysqli_query($cxn,$sql)){
死(“错误:.mysqli_错误($cxn));
}
}
这很好用
<?php
$cxn = new mysqli("localhost", "CJroot", "password", "random");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$sql = "INSERT INTO random (random) VALUES"
. " ( FLOOR(1000000000 + RAND() * 9000000000) )"
. ",( FLOOR(1000000000 + RAND() * 9000000000) )"
. ",( FLOOR(1000000000 + RAND() * 9000000000) )"
. ",( FLOOR(1000000000 + RAND() * 9000000000) )";
for ($i=0; $i < 25; $i++) {
if(!mysqli_query($cxn,$sql)) {
die("Error: ".mysqli_error($cxn));
}
}
$cxn->close();
?>
这很好用
<?php
$cxn = new mysqli("localhost", "CJroot", "password", "random");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$sql = "INSERT INTO random (random) VALUES"
. " ( FLOOR(1000000000 + RAND() * 9000000000) )"
. ",( FLOOR(1000000000 + RAND() * 9000000000) )"
. ",( FLOOR(1000000000 + RAND() * 9000000000) )"
. ",( FLOOR(1000000000 + RAND() * 9000000000) )";
for ($i=0; $i < 25; $i++) {
if(!mysqli_query($cxn,$sql)) {
die("Error: ".mysqli_error($cxn));
}
}
$cxn->close();
?>
'rand
嗯,是的。你需要先生成数字,然后使用变量插入。试过了,同样的错误'rand
嗯,是的。你需要先生成数字,然后使用变量插入。试过了,同样的错误,但我需要循环函数,以便它一次添加100个随机数。我已经添加了一个sample direct在MySQL中用于100行。但是我需要循环该函数,以便它一次添加100个随机数。我已经为MySQL中的100行添加了一个示例direct。我回答中的示例生成了一个介于幂(10,9)和幂(10,10)-1
(100000000和99999999)之间的值。如果您想要范围从1111111111到9999999,请将100000000
替换为1111111
,并将900000000
替换为888888 9
。我答案中的示例生成幂(10,9)和幂(10,10)-1
之间的值。如果您想要范围从1111111111到99999999,请将文字100000000
替换为1111111
,并将900000000
替换为888888 9
。