后数据PHP cURL循环

后数据PHP cURL循环,php,curl,Php,Curl,早晨,如何使用php curl发布数据并执行循环?我被困在这里。。。代码无法循环POST数据 这是我的密码: <?php $conn = mysql_connect('localhost', 'root', ''); if (!$conn) { die('Could not connect: ' . mysql_error()); }else{ mysql_select_db('psv'); } $query="SELECT * FROM accounts WHERE us

早晨,如何使用php curl发布数据并执行循环?我被困在这里。。。代码无法循环POST数据

这是我的密码:

<?php

$conn = mysql_connect('localhost', 'root', '');
if (!$conn) {
  die('Could not connect: ' . mysql_error());
}else{
    mysql_select_db('psv');
}

$query="SELECT * FROM accounts WHERE user_first_name != ''";
$result = mysql_query($query,$conn);

for ($i=1;$i<=20;$i++)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "http://www.domain.com/user/register");
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $r=mysql_fetch_row($result);
    curl_setopt($ch, CURLOPT_POSTFIELDS, 
    "user_first_name=$r[2]&user_last_name=$r[3]&user_email=$r[4]&user_password=$r[5]&user_phone=0$r[6]&user_address=(value)");
}
curl_exec($ch);
curl_close($ch);
?>

MySQL函数已弃用,不应使用。将提供类似的MySQLi答案

把你的行动分开一点。从MySQL收集数据,然后构建post数据

<?php

$conn = mysqli_connect('localhost', 'root', '', 'psv');
if (!$conn) {
  die('Could not connect: ' . mysqli_connect_error());
}

$query="SELECT * FROM accounts WHERE user_first_name != ''";
$missing_names = array();
if($result = mysqli_query($conn, $query)){
    // Assume you will have more than one row in the recordset
    while($r=mysqli_fetch_assoc($result)){
        $missing_names[] = $r;
    }
    mysqli_free_result($result);
    mysqli_close($conn);
} else {
    $err = mysqli_error($conn);
    mysqli_close($conn);
    die("SQL Error: $err\r\n";);
}

$results = array();
foreach($missing_names as $r) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "http://www.domain.com/user/register");
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($r));
    $results[] = curl_exec($ch);
    curl_close($ch);
}
?>

循环中的$i将增加两次。您不需要在底部使用它。
$r
未定义,因此应该会产生错误。打开错误报告并从这里开始我建议首先从MySQL收集数据,然后一次发布所有数据。另请看一下
http\u build\u query()
记录集基于
$result
-而不是
$r
,然后我该怎么办?警告:mysqli\u query()希望参数1是mysqli,字符串在第10行的C:\xampp\htdocs\post\index.php中给出致命错误:调用未定义的函数mysqli\u fetch\u asso()在第12行的C:\xampp\htdocs\post\index.php中,您在mysql\u fetch\u assoc中误用了“C”,并给出了一个新错误:警告:mysqli\u query()期望参数1为mysqli,在第10行的C:\xampp\htdocs\post\index.php中给出的字符串警告:mysqli\u fetch\u assoc()期望参数1为mysqli\u结果,第12行C:\xampp\htdocs\post\index.php中给出的null警告:mysqli_free_result()期望参数1为mysqli_result,第15行C:\xampp\htdocs\post\index.php中给出的null经过审阅和编辑。检查,测试,然后让我知道。没有显示任何。。。如果成功,它将显示一个json响应{“st”:1,“msg”:“”}非常感谢各位。。。移除卷曲设置选项($ch,卷曲设置选项返回传输,1);解决了我的问题。。。
<?php

$conn = mysqli_connect('localhost', 'root', '', 'psv');
if (!$conn) {
  die('Could not connect: ' . mysqli_connect_error());
}

$query="SELECT * FROM accounts WHERE user_first_name != ''";
$missing_names = array();
if($result = mysqli_query($conn, $query)){
    // Assume you will have more than one row in the recordset
    while($r=mysqli_fetch_assoc($result)){
        $missing_names[] = $r;
    }
    mysqli_free_result($result);
    mysqli_close($conn);
} else {
    $err = mysqli_error($conn);
    mysqli_close($conn);
    die("SQL Error: $err\r\n";);
}

$results = array();
foreach($missing_names as $r) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "http://www.domain.com/user/register");
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($r));
    $results[] = curl_exec($ch);
    curl_close($ch);
}
?>