【问题标题】:PHP/SQL Issues on Posting Data to Database w/ cURL使用 cURL 将数据发布到数据库的 PHP/SQL 问题
【发布时间】:2015-11-17 21:39:46
【问题描述】:

您将在下面找到代码。

我正在尝试用它来检索 JSON 数据,并将值发布到我的数据库中。

JSON 结构和输出顺序...

[{
    "record_locator": "value",
    "status": "value",
    "area": "value",
    "region": "value",
    "name": "value",
    "position":"value",
    "phone_": "value",
    "project_manager": "value",
    "ipad_email": "value",
    "email": "value",
    "team_leader": "value",
    "regional": "value",
    "title": "value",
    "start_date": "value",
    "employee_id_number": "value",
}]

为了方便眼睛...

$VAR = 我的表键 = JSON 键

$area   =area   =area
    $email  =email  =email
    $ipad_email =ipad_email =ipad_email
    $empid  =empid  =employee_id_number
    $fullname   =fullname   =name
    $manager    =manager    =If Clause
    $mobilenumber   =mobilenumber   =phone_
    $record_locator =record =record_locator
    $status =status =status
    $region =region =region
    $position   =position   =position
    $project_manager    =project_manager    =project_manager
    $team_leader    =team_leader    =team_leader
    $regional   =regional   =regional
    $title  =title  =title
    $startdate  =startdate  =startdate

我已经对该值进行了简单的回显测试,他们正在抓取它,只是由于某种原因它没有发布到数据库中。可悲的是我想不通。

任何帮助将不胜感激。 这不起作用。

<html>
                <head>
                <style>
                td {
                    text-align:center;
                    border: 1px solid black;
                }
                </style>
                </head>
                <body>
                <div style="margin-top:5%; width:300px; margin:auto; border: 1px solid black; padding:3px;"><center><p id="container">Loading...</p></div>
                <?php

                $error_msg = "";
                        $url="someurl.com";

                         $ch = curl_init();

        curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);       

        $json = curl_exec($ch);
        curl_close($ch);
        $rdata = json_decode($json, TRUE);

    $c=0;
    $repverified = 0;

    foreach ($rdata as $data) { 

    //  Assigned key            JSON KEY 
    $user_rl    = $rdata[$c]['record_locator'];
    $status = $rdata[$c]['status'];
    $area   = $rdata[$c]['area'];
    $region = $rdata[$c]['region'];
    $fullname   = $rdata[$c]['name'];
    $position   = $rdata[$c]['position'];
    $mobilenumber   = $rdata[$c]['phone_'];
    $project_manager    = $rdata[$c]['project_manager'];
    $ipad_email     = $rdata[$c]['ipad_email'];
    $email  = $rdata[$c]['email'];
    $team_leader    = $rdata[$c]['team_leader'];
    $regional   = $rdata[$c]['regional'];
    $title  = $rdata[$c]['title'];
    $startdate  = $rdata[$c]['start_date'];
    $empid  = $rdata[$c]['employee_id_number'];


        if(
            $fullname       == $rdata[$c]['project_manager'] || 
            $fullname       == $rdata[$c]['team_leader'] || 
            $fullname       == $rdata[$c]['regional'] || 
            $fullname       == $rdata[$c]['director']) 
                {
                $manager = 'YES';
                } 
        else {
                $manager = 'NO';
             }

            // Insert the new user into the database 
$sql = "
    INSERT INTO memberss (
    record,
    status,
    area,
    region,
    fullname,
    manager,
    position,
    mobilenumber,
    project_manager,
    ipad_email,
    email,
    team_leader,
    regional,
    title,
    startdate,
    empid

    )
    VALUES (
    ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";

   $insert_stmt = $mysqli->prepare($sql);

    // Insert the new user into the database
    if ($insert_stmt)
    {
        $insert_stmt->bind_param('ssssssssssssssss',$user_rl,$status,$area,
                $region,$fullname,$manager,$position,$mobilenumber,
                $project_manager,$ipad_email,$email,$team_leader,
                $regional,$title,$startdate,$empid);

        // Execute the prepared query.
        if (! $insert_stmt->execute()) {
            header('Location: ../error.php?err=Registration failure: INSERT');
        }
    }
    }

    echo    '<div>Check to ensure we are grabbing the values</div>';
    echo    '<td>'. $user_rl    .'</td><br>';
    echo    '<td>'. $status .'</td><br>';
    echo    '<td>'. $area   .'</td><br>';
    echo    '<td>'. $region .'</td><br>';
    echo    '<td>'. $fullname   .'</td><br>';
    echo    '<td>'. $manager    .'</td><br>';
    echo    '<td>'. $position   .'</td><br>';
    echo    '<td>'. $mobilenumber   .'</td><br>';
    echo    '<td>'. $project_manager    .'</td><br>';
    echo    '<td>'. $ipad_email .'</td><br>';
    echo    '<td>'. $email  .'</td><br>';
    echo    '<td>'. $team_leader    .'</td><br>';
    echo    '<td>'. $regional   .'</td><br>';
    echo    '<td>'. $title  .'</td><br>';
    echo    '<td>'. $startdate  .'</td><br>';
    echo    '<td>'. $empid  .'</td><br>';


        $c++;


        echo "<script>document.getElementById('container').innerHTML = 'Registration Completed!<br><b> Active Users will now be visible</b>';</script>";
        ?>

我什至尝试更改我的 if 语句和 bind_params 仍然没有成功

if (! $insert_stmt->execute()) {
                header('Location: ../error.php?err=Registration failure: INSERT');
            }
        }
        } else {
        // Insert the new user into the database 
        if ($insert_stmt = $mysqli->prepare("INSERT INTO members (email, password, status, empid, name, area, manager, record) VALUES (?, ?, ?, ?, ?, ?, ?, ?)")) {
            $insert_stmt->bind_param('ssssssss', $email, $repEmail, $status, $employeeID, $FullName, $area, $manager, $record_locator);
            // Execute the prepared query.
            if (! $insert_stmt->execute()) {
                header('Location: ../error.php?err=Registration failure: INSERT');
            }
        }

添加了一个回声以仔细检查我们是否正在获取值。成功!我们是!

echo '检查以确保我们正在获取值';

echo    '<td>'. $user_rl    .'</td><br>';
echo    '<td>'. $status .'</td><br>';
echo    '<td>'. $area   .'</td><br>';
echo    '<td>'. $region .'</td><br>';
echo    '<td>'. $fullname   .'</td><br>';
echo    '<td>'. $manager    .'</td><br>';
echo    '<td>'. $position   .'</td><br>';
echo    '<td>'. $mobilenumber   .'</td><br>';
echo    '<td>'. $project_manager    .'</td><br>';
echo    '<td>'. $ipad_email .'</td><br>';
echo    '<td>'. $email  .'</td><br>';
echo    '<td>'. $team_leader    .'</td><br>';
echo    '<td>'. $regional   .'</td><br>';
echo    '<td>'. $title  .'</td><br>';
echo    '<td>'. $startdate  .'</td><br>';
echo    '<td>'. $empid  .'</td><br>';

数据库方案

CREATE TABLE IF NOT EXISTS `memberss` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `empid` varchar(5) COLLATE utf8_unicode_ci NOT NULL,
  `record` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
  `name` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `status` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `area` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `region` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `fullname` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `position` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `mobilenumber` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `project_manager` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `ipad_email` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `email` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `regional` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `title` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `startdate` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

它是两件事之一;我的数据库表设置不正确,或者我的主体脚本运行不正常。

我没有收到任何错误。即使我试图在发布时发现错误。哪个导致我的表设置不正确??

感谢您的任何帮助。

附:对于机智的人;是的,我的数据库连接文件只是没有包含在代码正文中

【问题讨论】:

  • 您应该检查错误,而不是header('Location: ../error.php?err=Registration failure: INSERT');,另外php.net/manual/en/mysqli.error.php..or 并记录错误。您还需要在header 之后退出。
  • 我做到了,没有错误被踢出:(
  • 您的方案有`name` varchar(100) COLLATE utf8_unicode_ci NOT NULL, 您的插入没有name 列。您的插入还有 manager ,它在您的方案中不存在。我认为您没有正确使用该错误报告。
  • 请不要在 cmets 中转储代码。检查您的错误日志,因为您不会将错误吐出到屏幕上。你会在那里找到很多信息。
  • 我知道在哪里可以找到错误日志,但我没有... @JayBlanchard

标签: php mysql json curl


【解决方案1】:

我已经弄清楚我做错了什么。

我还不够

VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)

我也没有绑定足够的字符串。

$insert_stmt-&gt;bind_param('ssssssssssssssss' 匹配我的

if ($insert_stmt = $mysqli-&gt;prepare("INSERT INTO members (values)"))

【讨论】:

  • 您需要弄清楚您的服务器/PHP 出了什么问题。有针对该错误引发的错误消息。
  • 是的,我知道您可以正常工作,但是您应该遇到错误。我怀疑您的错误报告有问题。
  • 出于教育目的(我对 PHP 还很陌生),我将如何构建我的错误报告来报告我做错了什么? @chris85
  • 所以准备好你会得到mysqli_prepare() returns a statement object or FALSE if an error occurred.。因此,如果出现错误,您将无法输入if ($insert_stmt) {,因此您应该使用php.net/manual/en/mysqli.error.php 将错误放在那里,或者这是我对手册的解释,尽管我不使用mysqli,但我不能经验之谈。
猜你喜欢
  • 2016-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多