我将旧的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我想,谢谢你的帮助。
答案 0 :(得分:3)
看看这一行:
$userkey = $_GET['api'];
这一行:
':userKey' => $userKey,
它不是同一个变量$userKey
!= $userkey
(K与k) - 变量名称区分大小写。
答案 1 :(得分:1)
参数名称userkey在SQL语句中是小写的。
执行调用中的K是userKey的大写。