【发布时间】:2015-11-19 18:19:35
【问题描述】:
我已经为此工作了好几个小时,但不知道如何为列插入/更新 NULL 值。比如我有一段代码
case 'add':
{
$message = $wpdb->insert('projs', array('compname' => $compname, 'projname' => $projname, 'imageurl' => $imageurl, 'sumsmall' => $sumsmall, 'sumfull' => $sumfull, 'results' => $results, 'caseid' => $caseid, 'hide' => $hide))
? 'Successfully added project to the database.'
: 'Error occurred when trying to add project to database: ' . $wpdb->last_error;
break;
}
每当它在$caseid等于null(在PHP领域)执行时,查询就会失败,wpdb->last_error是
无法添加或更新子行:外键约束失败 ('my_table_name', 'projs', 约束 'projs_ibfk_1' 外键 ('caseid') REFERENCES 'cases' ('id') ON DELETE SET NULL
作为参考,表格 projs 和 case 是在安装过程中创建的
// Add table to hold the project portfolio
if ($wpdb->get_var("SHOW TABLES LIKE 'projs'") != 'projs')
{
$wpdb->query("CREATE TABLE projs (id MEDIUMINT NOT NULL AUTO_INCREMENT PRIMARY KEY, compname VARCHAR (200), projname VARCHAR (200), imageurl VARCHAR(300), sumsmall VARCHAR (250), sumfull VARCHAR (5000), results VARCHAR (5000), postdate DATETIME DEFAULT CURRENT_TIMESTAMP, caseid MEDIUM INT, FOREIGN KEY (caseid) REFERENCES cases(id) ON DELETE SET NULL) $charset_collate");
}
// Add table to hold the case studies
if ($wpdb->get_var("SHOW TABLES LIKE 'cases'") != 'cases')
{
$wpdb->query("CREATE TABLE cases (id MEDIUMINT NOT NULL AUTO_INCREMENT PRIMARY KEY, compname VARCHAR (200), casename VARCHAR (200), imageurl VARCHAR(300), summary VARCHAR (5000), results VARCHAR (5000), postdate DATETIME DEFAULT CURRENT_TIMESTAMP) $charset_collate");
}
而且我看不出在projs 中插入NULL 值对caseid 有何违反。
【问题讨论】:
标签: php mysql wordpress database-design