我第一次尝试在Wordpress中使用外部db,但似乎无法将数据插入到db中。以下是我所拥有的:
<?php
global $wpdb;
$url = home_url();
require_once($url.\'/viper/confff.php\'); //contains variable to fill in below
$newdb = new wpdb($username, $password, $db_name, $host);
$newdb->show_errors();
?>
$numrows = $newdb->get_results("SELECT * FROM chi_clients WHERE AccountNum=\'$acctNum\'");
if($numrows!=0)
{
$row = $newdb->get_results("SELECT * FROM chi_clients WHERE AccountNum=\'$acctNum\'",ARRAY_A);
$name= $row[\'lastName\'] . ", " . $row[\'firstName\'];
$phone= $row[\'phone\'];
$phonearea = substr($phone,0,3);
$phonemain = substr($phone,3,10);
$phonenumber = $phonearea ."-". $phonemain;
$email= $row[\'email\'];
$newdb ->insert (
chi_orders, array(
\'name\' => \'$name\',
\'AccountNum\' => \'$acctNum\',
\'email\' => \'$email\',
\'OrderDesc\' => \'$orderDesc\',
\'product\' => \'$service\',
\'quantity\' => \'$quantity\',
\'notes\' => \'$notes\',
\'status\' => \'Order Received\',
\'dateIne\' => \'$todayDate\',
\'dateOut\' => \'$newDate\',
\'advert\' => \'$advert\',
\'phone\' => \'$phonenumber\'
)
);
}
else {
echo\'<span style="color: #000; font-family: Verdana; font-weight: bold; font-size: 12px;">Incorrect Account Number!</span>\';
}
我知道数据正在发布到页面上,因为我已经将变量回显到页面上。但是,它没有连接到数据库,因为我没有从get\\u results SELECT语句中获取信息,也没有向数据库中插入任何内容。对于我的$host,我使用的是“localhost”,这是我一直用于这个特定数据库的。我知道用户名、密码和数据库名称是正确的。
有什么想法吗?谢谢
最合适的回答,由SO网友:s_ha_dum 整理而成
您正在使用$wpdb
错误地查看这些行:
$row = $newdb->get_results("SELECT * FROM chi_clients WHERE accountNum=\'$acctNum\'",ARRAY_A);
$name= $row[\'lastName\'] . ", " . $row[\'firstName\'];
$wpdb->get_results
将返回一个“行”数组。它将是多维的。您将其视为返回了一维数组。也就是说,这(完全不同的数据,但说明了预期的阵列):
array(10) {
[0]=>
array(23) {
["ID"]=>
string(1) "1"
["post_author"]=>
string(1) "1"
["post_date"]=>
string(19) "2013-03-26 18:37:57"
["post_date_gmt"]=>
string(19) "2013-03-26 18:37:57"
["post_content"]=>
string(429) "[testsc]
...
您需要在该结果集上循环以获得单独的行,或者执行以下操作:
$name= $row[0][\'lastName\'] . ", " . $row[0][\'firstName\'];
这是真的,即使结果集是一行。如果知道结果集只有一行,则可以使用
$wpdb->get_row
相反,这将给你一个一维数组。
其次,变量不会在单引号内展开,因此所有以这种方式使用变量的尝试--\'name\' => \'$name\',
-- 简单是行不通的。你真的设定了name
到$name
, 不适用于$name
变量
第三,第一个参数$wpdb ->insert
是表示表名的字符串。您已经使用了PHP将解释为常量的内容,几乎可以肯定它是一个未定义的常量。你需要报价chi_orders
.
这些就是我发现的问题。如果纠正这些问题并不能解决问题,它会让你前进很多。