【发布时间】:2016-02-11 00:48:00
【问题描述】:
我编写了一个 php 脚本来将 CSV 文件导入 wordpress 数据库。我今天一直在处理许多不同的错误,这些错误导致网站崩溃,直到我修复它们。
现在所有错误都已清除,函数末尾的字符串正在打印到屏幕上,好像一切正常,但它没有将我的数据输入数据库。
另外为了测试,我删除了创建数据库部分,只留下删除以查看它是否会删除数据库,但它没有。所以基本上看起来我的函数没有错误,但它正在运行。而且它实际上并没有做任何事情。我不明白每次出现错误或文件路径不存在但实际上并未执行我尝试执行的操作时,它如何通过函数告诉我。
任何有关如何解决此问题或从这里去哪里的意见将不胜感激,
function productsExec() {
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
global $wpdb;
global $simple_prod_version;
$table_name = $wpdb->prefix . "wuno_inventory";
if($wpdb->get_var("show tables like '$table_name'") != $table_name) {
$sql = "DROP TABLE IF EXISTS $table_name";
dbDelta($sql);
// $wpdb->query($sql);
$sql = "CREATE TABLE " . $table_name . " (
id int(8) NOT NULL AUTO_INCREMENT,
wuno-product varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
wuno-description varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
wuno-alternates varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
wuno-onhand varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
wuno-condition varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;";
dbDelta($sql);
// $wpdb->query($sql);
//Upload File
if (is_uploaded_file($_FILES['inventory.csv']['tmp_name'])) {
echo "<h1>" . "File ". $_FILES['inventory.csv']['name'] ." uploaded successfully." . "</h1>";
echo "<h2>Displaying contents:</h2>";
readfile($_FILES['inventory.csv']['tmp_name']);
}
//Import uploaded file to Database
$handle = fopen(inventory.csv, 'w');
while (($data = fgetcsv($handle, 10000, ",")) !== FALSE) {
$insert = "INSERT INTO" . $table_name . "(wuno-product, wuno-description, wuno-alternates, wuno-onhand, wuno-condition)" .
"VALUES ('$data[0]', '$data[1]', '$data[2]', '$data[3]', '$data[4]')";
$results = $wpdb->query( $insert );
}
fclose($handle);
echo 'Everything seems to be running smoothly.';
}
}
【问题讨论】:
-
据我所知,这个
INSERT INTO" . $table_name . "转换为,例如INSERT INTOtablename并且您有连字符用于MySQL 正在转换为wuno MINUS product等的列名。检查错误会告诉关于它。 -
非常感谢您的反馈,我没有收到任何错误。我会尝试找出原因
-
您确定错误检查已开启?看看这个关于 WordPress 开发堆栈交换的问答wordpress.stackexchange.com/questions/16382/… - 和
$wpdb->last_error -
是的,先生,它已开启。它显示了打开错误检查时始终显示的典型错误。我将 wuno-products 更改为 wuno_products,并确保数据库表上的前缀与其他所有内容一样。因为我在表名中声明了这一点。唯一改变的是我最后的字符串现在没有触发,但仍然没有错误。我会检查链接谢谢。
-
不客气。您还需要对其他列名执行相同的操作。祝你好运。