douzhuan1169 2017-01-26 22:16
浏览 62
已采纳

将MYSQL_转换为PDO错误

I converted my old MYSQL_* code to PDO. I thought everything was fine, but i have an error:

<?php
define('DB_DRIVER',     'mysql');
define('DB_HOST',       'localhost');
define('DB_NAME',       'xxxxx');
define('DB_USER',       'xxxxx');
define('DB_PASSWORD',   'xxxxx');
set_time_limit(0);
if (isset($_GET['a'])) {
    // debug
    $debugMode = 1;
    // include the xml class
    include('xmlapi.php');
    // try...
    try {
        // credentials username,password,host(ip),domain
        $cpanelU = $_GET['cpu'];
        $cpanelP = $_GET['cpp'];
        $cpanelH = $_GET['cph'];
        $cpanelD = $_GET['cpd'];
        $ftpUser = $_GET['ftu']; // ftp username
        $ftpPass = $_GET['ftp']; // ftp password
        $userkey = $_GET['api'];
        // setup
        $xmlapi = new xmlapi($cpanelH);
        $xmlapi->password_auth($cpanelU,$cpanelP);
        $xmlapi->set_debug(1);
        $xmlapi->set_port(2083);
        $xmlapi->set_output('array');
        // add an addon-domain
        $args1  = [
            'dir' => 'public_html/' . $cpanelD,
            'newdomain' => $cpanelD,
            'subdomain' => strstr($cpanelD, '.', true)
        ];
        $query1 = $xmlapi->api2_query($cpanelU, 'AddonDomain', 'addaddondomain', $args1);
        print "<pre>"; print_r($query1); print "</pre>";
        $pdo = new PDO(sprintf('%s:host=%s;dbname=%s', DB_DRIVER, DB_HOST, DB_NAME), DB_USER, DB_PASSWORD);
        // we need to save any error to the database here
        if ($query1['data']['result'] == false) {
            // database connection
            // $c = mysqli_connect("localhost", "paydayci_exp", "milkybar1", "paydayci_exp");
            // insert into mysql
            // $b = $c->query("INSERT INTO `addon_domains` (`addon_id`,`addon_api`,`addon_d_reason`,`addon_f_reason`,`addon_domain`,`addon_ftp_user`,`addon_ftp_pass`,`addon_ip`,`addon_date`) VALUES ('','".$userkey."','".htmlspecialchars(stripslashes($query1['data']['reason']))."','Failed','".$cpanelD."','".$ftpUser."','".$ftpPass."','".$cpanelH."',NOW())");
            $pdo->prepare('
                INSERT  INTO `addon_domains` (`addon_id`, `addon_api`, `addon_d_reason`, `addon_f_reason`, `addon_domain`, `addon_ftp_user`, `addon_ftp_pass`, `addon_ip`, `addon_date`)
                VALUES  (\'\', :userkey, :reason, \'Failed\', :cpanelD, :ftpUser, :ftpPass, :cpanelH, NOW())
            ')->execute([
                ':userKey' => $userKey,
                ':reason' => htmlspecialchars(stripslashes($query1['data']['reason'])),
                ':cpanelD' => $cpanelD,
                ':ftpUser' => $ftpUser,
                ':ftpPass' => $ftpPass,
                ':cpanelH' => $cpanelH
            ]);
        }
        // add an addon-domain
        if ($query1['data']['result'] == true) {
            // echo $query1['data']['reason'] . "

";
            // add an ftp account
            $args2  = [
                'user' => $ftpUser . '@' . $cpanelD,
                'pass' => $ftpPass,
                'quota' => 0,
                'homedir' => 'public_html/' . $cpanelD
            ];
            $query2 = $xmlapi->api2_query($cpanelU, 'Ftp', 'addftp', $args2);
            // if the result bool is set
            if ($query2['data']['result'] == true) {
                // print "<pre>"; print_r($query2); print "</pre>";
                // database connection
                // $c = mysqli_connect("localhost", "paydayci_exp", "milkybar1", "paydayci_exp");
                // insert into mysql
                // $b = $c->query("INSERT INTO `addon_domains` (`addon_id`,`addon_api`,`addon_d_reason`,`addon_f_reason`,`addon_domain`,`addon_ftp_user`,`addon_ftp_pass`,`addon_ip`,`addon_date`) VALUES ('','".$userkey."','".htmlspecialchars(stripslashes($query1['data']['reason']))."','".$query2['data']['reason']."','".$cpanelD."','".$ftpUser."','".$ftpPass."','".$cpanelH."',NOW())");
                $pdo->prepare('
                    INSERT  INTO `addon_domains` (`addon_id`, `addon_api`, `addon_d_reason`, `addon_f_reason`, `addon_domain`, `addon_ftp_user`, `addon_ftp_pass`, `addon_ip`, `addon_date`)
                    VALUES (\'\', :userkey, :reason1, :reason2, :cpanelD, :ftpUser, :ftpPass, :cpanelH, NOW())
                ')->execute([
                    ':userKey' => $userKey,
                    ':reason1' => htmlspecialchars(stripslashes($query1['data']['reason'])),
                    ':reason2' => $query2['data']['reason'],
                    ':cpanelD' => $cpanelD,
                    ':ftpUser' => $ftpUser,
                    ':ftpPass' => $ftpPass,
                    ':cpanelH' => $cpanelH
                ]);
                // DEBUG
                if ($debugMode) {
                    $fp = fopen('masterDebug.txt', 'a');
                    fwrite($fp, "INSERT INTO `addon_domains` (`addon_id`,`addon_api`,`addon_d_reason`,`addon_f_reason`,`addon_domain`,`addon_ftp_user`,`addon_ftp_pass`,`addon_ip`,`addon_date`) VALUES ('','".$userkey."','".htmlspecialchars(stripslashes($query1['data']['reason']))."','".$query2['data']['reason']."','".$cpanelD."','".$ftpUser."','".$ftpPass."','".$cpanelH."',NOW())
");
                    fclose($fp);
                } // $debugMode
            } else {
                ####
                # Need some form of error reporting...
                ####
                // database connection
                // $c = mysqli_connect("localhost", "paydayci_exp", "milkybar1", "paydayci_exp");
                // insert into mysql
                // $b = $c->query("INSERT INTO `addon_domains` (`addon_id`,`addon_api`,`addon_d_reason`,`addon_f_reason`,`addon_domain`,`addon_ftp_user`,`addon_ftp_pass`,`addon_ip`,`addon_date`) VALUES ('','".$userkey."','".htmlspecialchars(stripslashes($query1['data']['reason']))."','".$query2['data']['reason']."','".$cpanelD."','".$ftpUser."','".$ftpPass."','".$cpanelH."',NOW())");
                $pdo->prepare('
                    INSERT  INTO `addon_domains` (`addon_id`, `addon_api`, `addon_d_reason`, `addon_f_reason`, `addon_domain`, `addon_ftp_user`, `addon_ftp_pass`, `addon_ip`, `addon_date`)
                    VALUES (\'\', :userkey, :reason1, :reason2, :cpanelD, :ftpUser, :ftpPass, :cpanelH, NOW())
                ')->execute([
                    ':userKey' => $userKey,
                    ':reason1' => htmlspecialchars(stripslashes($query1['data']['reason'])),
                    ':reason2' => $query2['data']['reason'],
                    ':cpanelD' => $cpanelD,
                    ':ftpUser' => $ftpUser,
                    ':ftpPass' => $ftpPass,
                    ':cpanelH' => $cpanelH
                ]);
            }
        }
    } catch (Exception $e) {
        echo $e;
    }
} else {  // isset
    header('Location: http://www.site1.com/');
}

The error i got in the logs is:

[26-Jan-2017 16:01:17 America/Chicago] PHP Notice: Undefined variable: userKey in /home/wraithpo/public_html/camnevdomains.com/api/addon-domain.php on line 80 [26-Jan-2017 16:01:17 America/Chicago] PHP Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in /home/wraithpo/public_html/site1.com/api/addon-domain.php on line 87

It is probably my tired eyes but i cannot see the issue, can anyone see anything obvious i have missed, i don't see anything after looking it over, if it comes to it i could revert back to mysli i suppose, thanks for any help guys.

  • 写回答

2条回答 默认 最新

  • duan1226 2017-01-26 22:20
    关注

    Take a look at this line:

    $userkey = $_GET['api'];
    

    And this line:

    ':userKey' => $userKey,
    

    It's not the same variable $userKey != $userkey (K vs. k) - The variable names are case-sensitive.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多
  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败