$query="INSERT INTO subscriber (RandomCode,Email,CreateDate,UpdateDate <?if ($num!=0) echo ','.$string; ?> ) VALUES (?,?,?,?,CURDATE(),'',<? if ($num!=0) echo ','.$stringResult; ?>)";
echo $query;
如果我在sql语句中添加一些条件,它将不会检查或触发php函数。
if (!isset($set['Attribute']))
{$set['Attribute']=NULL;} <=======This statement to check if there is no value posted
$stringResult=$stringResult.$_POST[$set['Attribute']].",";}}
$stringResult = substr($stringResult, 0, -1);
echo $stringResult;
另外,如果结果是发布的空值,我该如何设置它以便可以在stringResult中查看为''?我需要把它放在我的sql语句中。
谢谢。
答案 0 :(得分:1)
$query="INSERT INTO subscriber (RandomCode,Email,CreateDate,UpdateDate <?if ($num!=0) echo ','.$string; ?> ) VALUES (?,?,?,?,CURDATE(),'',<? if ($num!=0) echo ','.$stringResult; ?>)";
这是破碎的;你不回显添加到字符串,你需要将它连接在一起。方法如下:
$query="INSERT INTO subscriber (RandomCode,Email,CreateDate,UpdateDate";
if ($num!=0)
{
$query .= ',' . $string;
}
$query .= ") VALUES (?,?,?,?,CURDATE(),'',"
if ($num!=0)
{
$query .= ','.$stringResult;
}
$query .= ")";
当你正在构建一个字符串并且需要停下并做出决定时,比如“这是否为零?然后执行此操作,现在继续。”,您需要结束字符串,如果需要,将字符串连接到其中,然后将字符串的其余部分连接到末尾。继续结束字符串并连接部分,直到完成为止。
如果要为字符串添加空值,则与添加空字符串''
相同。
$string "mystring" . NULL . "morestring"; //result is "mystringmorestring"
$string "mystring" . "" . "morestring"; //result is "mystringmorestring"
结果字符串完全相同。虽然NULL!==“”(意思是NULL和“”不相同,因为它们不是同一类型),只要结果字符串出现,它就是相同的。
答案 1 :(得分:0)
您可以使用内联三元组:
$str = 'abcd' . ($num != 0 ? ',' : '' ) . 'efg';
否则,只需将其与if
语句分开:
$query = "INSERT INTO subscriber (RandomCode, Email, CreateDate, UpdateDate ";
if ($num != 0) {
$query .= ', ' . $string;
}
$query .= ") VALUES (?, ?, ?, ?, CURDATE(), ''";
if ($num != 0) {
$query .= ', ' . $stringResult;
}
$query .= ")";
答案 2 :(得分:0)
您遇到的问题是,当您已经使用PHP时,您正试图打开<?php ?>
。该字符串将按原样输出到mysql处理程序。你要做的只是设置一个变量,然后将结果添加到你的字符串中。
$firstAddition = ($num!=0) ? ','.$string : '';
$secondAddition = ($num!=0) ? ','.$stringResult : '';
然后,当您构建查询时,只需在这些新变量中连接。
答案 3 :(得分:0)
我将条件置于我设置查询的行之上。
<?php
$extra='';
if ($num!=0) $extra= ','.$string;
$extra2='';
if ($num!=0) $extra=','.$stringResult;
$query="INSERT INTO subscriber (RandomCode,Email,CreateDate,UpdateDate '.$extra.' ) VALUES (?,?,?,?,CURDATE(),'','.$extra2.')";
?>
完全未经测试。一定要清理$ string和$ stringResult。