Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 生成100个10位随机数并保存到数据库_Php_Mysql_Random - Fatal编程技术网

Php 生成100个10位随机数并保存到数据库

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

这是一个非常简单的函数,但它总是给我错误。我正在编写一个脚本来生成100个10位数的随机数,但我一直有这样的错误:“请查看与MySQL服务器版本相对应的手册,以了解第1行附近使用的正确语法

这是我的密码

<?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)
是一个文字,一个字符串。它不是对函数的引用


如果我们想使用MySQL
RAND()
函数,我们可以这样做:

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)
是一个文字,一个字符串。它不是对函数的引用


如果我们想使用MySQL
RAND()
函数,我们可以这样做:

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