我可以在sql查询之间回应一些东西吗?

时间:2012-03-23 21:01:10

标签: php mysql html

$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语句中。

谢谢。

4 个答案:

答案 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。