insert的问题
页面放了一个panel,里面一个edit,一个button,然后在button的onclick事件里加了个函数,如下
function insertdb($sender, $params)
{
$this->Table1->Open();
$this->Table1->Append();
$this->Table1->ID=45;
$this->Table1->MINGCHENG=$this->Edit1->Text;
$this->Table1->SHIFOUZHUCE=2;
$this->Table1->Post();
$this->Table1->Close();
}
运行的时候出现问题,提示无法将null插入到'ID'中(这里我的ID为pk),错误如下:
Callstack #0 File: C:\test\unit4.php Line: 47(这里47行为$Unit4->loadResource(__FILE__);)
|_Callstack #1 File: D:\program files\CodeGear\Delphi for PHP\1.0\vcl\classes.inc.php Line: 1698
|_Callstack #2 File: D:\program files\CodeGear\Delphi for PHP\1.0\vcl\classes.inc.php Line: 1745
|_Callstack #3 File: D:\program files\CodeGear\Delphi for PHP\1.0\vcl\classes.inc.php Line: 1410
|_Callstack #4 File: D:\program files\CodeGear\Delphi for PHP\1.0\vcl\stdctrls.inc.php Line: 3439
|_Callstack #5 File: D:\program files\CodeGear\Delphi for PHP\1.0\vcl\classes.inc.php Line: 1306
|_Callstack #6 File: C:\test\unit4.php Line: 30(这里30行为$this->Table1->Post();)
|_Callstack #7 File: D:\program files\CodeGear\Delphi for PHP\1.0\vcl\db.inc.php Line: 1405
|_Callstack #8 File: D:\program files\CodeGear\Delphi for PHP\1.0\vcl\db.inc.php Line: 816
|_Callstack #9 File: D:\program files\CodeGear\Delphi for PHP\1.0\vcl\dbtables.inc.php Line: 881
|_Callstack #10 File: D:\program files\CodeGear\Delphi for PHP\1.0\vcl\adodb\adodb.inc.php Line: 1834
|_Callstack #11 File: D:\program files\CodeGear\Delphi for PHP\1.0\vcl\adodb\drivers\adodb-oci8.inc.php Line: 769
|_Callstack #12 File: D:\program files\CodeGear\Delphi for PHP\1.0\vcl\adodb\adodb.inc.php Line: 907
根据错误提示查看源码,发现dbtables.inc.php Line: 881之前有段代码,
if (is_array($this->_keyfields))
{
reset($this->_keyfields);
while(list($key, $fname)=each($this->_keyfields))
{
unset($this->fieldbuffer[$fname]);
}
}
}
(此为881行)$insertSQL = $this->Database->_connection->AutoExecute($this->TableName, $this->fieldbuffer, 'INSERT');
在这里将keyfield的值都销毁了,当然插不进去了,搞不懂为什么要加这段代码?往高手解惑
[ 本帖最后由 echo 于 2007-10-23 16:51 编辑 ]