1

列に2つの配列1を使用し、値に別の配列を使用してクエリを作成したいと思います。最初の配列に3つの整数列があり、デフォルトとして0を格納したくないので、NULLを設定したいので、値が入力されているかどうかを確認します。入力されていない場合は、NULLを設定します。しかし、クエリを作成すると、NULLが表示されません。nullが空白に置き換えられているのがわかります。PHPがNULLワードを削除しているようですか?

$set_null = array("asst_phone","mailing_zip","other_zip");

    foreach($columns as $key=>$col){
    if(in_array($col,$set_null) && $values[$key] == ""){
       $val[$key] = NULL;
    }
    else    
       $val[$key] = "'".$values[$key]."'";
    }
    $query_vals = "";
    foreach($val as $qval){
      if($qval == "") $query_vals .= NULL;
        $query_vals .= $qval;
            }
    echo $query_vals;

以下のようなクエリを生成します

INSERT INTO zoho_contacts (`contactid`,`smownerid`,`contact_owner`,`lead_source`,`first_name`,`last_name`,`accountid`,`account_name`,`email`,`title`,`department`,`phone`,`home_phone`,`other_phone`,`fax`,`mobile`,`date_of_birth`,`assistant`,`asst_phone`,`reports_to`,`smcreatorid`,`created_by`,`modifiedby`,`modified_by`,`created_time`,`modified_time`,`mailing_street`,`other_street`,`mailing_city`,`other_city`,`mailing_state`,`other_state`,`mailing_zip`,`other_zip`,`mailing_country`,`other_country`,`description`,`email_opt_out`,`skype_id`,`salutation`,`add_to_quickbooks`,`secondary_email`) values ('418176000000052001','418176000000047003','','','','','418176000000047027','','','','','02164 25452132','','','','9798659821','','',,'','418176000000047003','','418176000000047003','','','','','','','','','',,,'','','','','','Mr.','','')

私のmysql列構造

列のプロパティ=NULL=>はい、デフォルト=> NULL、そうですか??

4

3 に答える 3

3

交換

$val[$key] = NULL;

$val[$key] = 'NULL';
于 2012-05-30T13:05:37.430 に答える
0

おそらく、すべての値に mysql_escape_string を使用することをお勧めします。

if($val != "")
$val= "".mysql_escape_string($val)."";
else
$val = "NULL";
于 2012-05-30T13:30:31.387 に答える
0

PHP では、NULL を引用符で囲む必要があります (このクエリで機能させたい場合)

于 2012-05-30T13:06:48.780 に答える