繁体   English   中英

POST 数据 PHP cURL 循环

[英]POST data PHP cURL LOOP

早安,如何使用 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);
?>

有什么建议吗?

我已经像这样改变了我的代码,但不做循环:

<?php

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

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

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.domain.com/user/register");
curl_setopt($ch, CURLOPT_POST, 1);

for ($i=1;$i<=20;$i++)
{
   $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 收集数据,然后构建您的帖子数据。

<?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);
}
?>

因此,让我们假设您的 Query 有 3 个结果。 它们将存储在$missing_names数组中。 您遍历数组并发布每一行的数据。 有一些方法可以保持连接或执行多个帖子,但我认为这是一种更好的方法。 如果出现错误或您希望得到结果,您可以在$results数组中检查FALSE 您还将通过$results的计数知道它运行了多少次。 您已将 return transfer 设置为 true,因此您必须期待一些返回数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM