我正在尝试在表格中添加一个字段:
$tables = array(Gun => 6,Color => 2,Holster => 2,Canter => 1,Hand => 1);
foreach($tables as $key => $val) {
$table_name = $wpdb->prefix . 'GunInventory'.$key;
$sql = "CREATE TABLE $table_name (
GunInventory".$key."Id int(11) NOT NULL AUTO_INCREMENT,
Name varchar(200) NOT NULL,
Value char(".$val.") NOT NULL,
Price decimal(10,2) NOT NULL,
Order INT NOT NULL,
UNIQUE KEY GunInventory".$key."Id (GunInventory".$key."Id)
);";
dbDelta($sql);
}
问题是我的表上没有创建订单字段,我尝试从表中删除字段并重新安装插件,我的表保持不变。该脚本将创建表。
我尝试启用调试,但没有任何错误。
答案 0 :(得分:1)
答案 1 :(得分:0)
ORDER
是MYSQL中的保留关键字。要么使用反引号(`)来逃避它,要么选择一个不同的名称。有关详细信息,请参阅this post。
如果启用错误报告,除非数组中的那些键是常量,否则您的页面上应该有警告。
注意:使用未定义的常量枪 - 假定'枪'在...中 注意:使用未定义的常量颜色 - 在...中假定为“颜色” 等
它起作用的原因是这些键是由PHP转换的,但是you should really quote them和enable error reporting。
答案 2 :(得分:0)
Order
是mysql
个保留关键字。不应该使用它。
您的数组定义似乎并不完美。您将键指定为常量。这不是一个好习惯。
http://www.php.net/manual/en/language.types.array.php
$tables = array(Gun => 6,Color => 2,Holster => 2,Canter => 1,Hand => 1);
应该是
$tables = array("Gun" => 6,"Color" => 2,"Holster" => 2,"Canter" => 1,"Hand" => 1);