我有一个jqgrid,它的日期列以0/0/0000格式发布,如果为空,则将"null"发送到我的php文件,然后插入到MYsql列。它发布"null",但不向数据库列发送"null"命令。我错过了什么?Firephp说,在这一点上,我的日期栏输入都是"1969-12-31"。我该怎么做才能将"null"正确地发布到这些列中?***更新:这是$_REQUEST:***的var dumb
array(12) {
["name"]=>string(24) "FABTECH B2B Presentation"
["id_continent"]=>string(6) " Ramon"
["lastvisit"]=>string(10) "12/31/2104"
["cdate"]=>string(9) "8/22/2014"
["ddate"]=>string(9) "9/14/2014"
["notes"]=>string(69) "B2B machines are C1 AJ and HG ATC. Waiting for part data from Yoshi."
["hello"]=>string(2) "No"
["mydate"]=>string(4) "null"
["oper"]=>string(4) "edit"
["id"]=>string(3) "184"
["PHPSESSID"]=>string(32) "93de884f9e02d507ff3662f63149f9f3"
["SQLiteManager_currentLangue"]=>string(2) "10"
}
我的代码:
$crudColumns = array(
'id' =>'id'
,'name'=>'name'
,'id_continent'=>'id_continent'
,'lastvisit'=>'lastvisit'
,'cdate'=>'cdate'
,'ddate'=>'ddate'
,'notes'=>'notes'
,'hello'=>'hello'
,'mydate'=>'mydate'
);
function fnCleanInputVar($string){
//$string = mysql_real_escape_string($string);
return $string;
}
/*----====|| GET and CLEAN THE POST VARIABLES ||====----*/
foreach ($postConfig as $key => $value){
if(isset($_REQUEST[$value])){
$postConfig[$key] = fnCleanInputVar($_REQUEST[$value]);
}
}
foreach ($crudColumns as $key => $value){
if(isset($_REQUEST[$key])){
if ($key == 'lastvisit' || $key == 'cdate' || $key == 'ddate' || $key == 'mydate' ) {
$crudColumnValues[$key] = '"'.date('Y-m-d', strtotime($_REQUEST[$key])).'"';
} else {
$crudColumnValues[$key] = '"'.fnCleanInputVar($_REQUEST[$key]).'"';
}
}
}
FB::info($crudColumnValues, "Dates");
/*----====|| INPUT VARIABLES ARE CLEAN AND CAN BE USED IN QUERIES||====----*/
Mysql query
case $crudConfig['update']:
/* ----====|| ACTION = UPDATE ||====----*/
if($DEBUGMODE == 1){$firephp->info('UPDATE','action');}
$sql = 'update '.$crudTableName.' set ';
/* create all of the update statements */
foreach($crudColumns as $key => $value){ $updateArray[$key] = $value.'='.$crudColumnValues[$key]; };
$sql .= implode(',',$updateArray);
/* add any additonal update statements here */
$sql .= ' where id = '.$crudColumnValues['id'];
if($DEBUGMODE == 1){$firephp->info($sql,'query');}
mysql_query( $sql )
or die($firephp->error('Couldn t execute query.'.mysql_error()));
break;
检查网格中的参数是否为null
,并将NULL
而不是日期放入数据库中。
foreach ($crudColumns as $key => $value){
if(isset($_REQUEST[$key])){
if ($key == 'lastvisit' || $key == 'cdate' || $key == 'ddate' || $key == 'mydate' ) {
if ($_REQUEST[$key] == 'null') {
$crudColumnValues[$key] = 'NULL';
} else {
$crudColumnValues[$key] = '"'.date('Y-m-d', strtotime($_REQUEST[$key])).'"';
}
} else {
$crudColumnValues[$key] = '"'.fnCleanInputVar($_REQUEST[$key]).'"';
}
}
}
似乎您可能混淆了空和null。空字符串将被解释为",而null将被解释成"null",这是很大的区别。试试这个。
编辑:在看了PHP手册之后,如果您试图向数组键添加一个null值,它似乎会更改为"。
首先,创建这样的阵列
['mydate'] => ''
更改日期格式。
foreach ($crudColumns as $key => $value){
if(isset($_REQUEST[$key])){
if ($key == 'lastvisit' || $key == 'cdate' || $key == 'ddate' || $key == 'mydate' ) {
if (strtotime($value)) {
$value = '"'.date('Y-m-d', $value).'"';
} else {
$value = "";
}
} else {
$crudColumnValues[$key] = fnCleanInputVar($_REQUEST[$key]);
}
此外,问题的一部分是您正在指定键,但需要更改值。