将MYSQL_转换为PDO错误

时间:2017-01-26 22:16:49

标签: php pdo

我将旧的MYSQL_*代码转换为PDO。我以为一切都很好,但我有一个错误:

<?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'] . "\n\n";
            // 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())\n");
                    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/');
}

我在日志中遇到的错误是:

  

[26-Jan-2017 16:01:17 America / Chicago] PHP注意:未定义的变量:/ home /wome / pora / pon   [26-Jan-2017 16:01:17 America / Chicago] PHP警告:PDOStatement :: execute():SQLSTATE [HY093]:参数号无效:参数未在/home/wraithpo/public_html/site1.com/中定义第87行的api / addon-domain.php

这可能是我疲惫的眼睛,但我看不出问题,任何人都可以看到任何明显我错过的东西,我看到它后看不到任何东西,如果涉及到它我可以恢复到mysli我想,谢谢你的帮助。

2 个答案:

答案 0 :(得分:3)

看看这一行:

$userkey = $_GET['api'];

这一行:

':userKey' => $userKey,

它不是同一个变量$userKey != $userkey(K与k) - 变量名称区分大小写。

答案 1 :(得分:1)

参数名称userkey在SQL语句中是小写的。

执行调用中的K是userKey的大写。