2012-03-23 12 views
0
$query="INSERT INTO subscriber (RandomCode,Email,CreateDate,UpdateDate <?if ($num!=0) echo ','.$string; ?>) VALUES (?,?,?,?,CURDATE(),'',<? if ($num!=0) echo ','.$stringResult; ?>)"; 
echo $query; 

私はsql文に何か条件を追加すると、php関数をチェックしたりトリガしたりしません。結果はNULL値が掲載されている場合、私はそれを設定することができます。またSQLクエリーの間に何かをエコーすることはできますか?

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ステートメントに入れる必要があります。

ありがとうございます。そうでなければ、ただif文でそれを破る

$str = 'abcd' . ($num != 0 ? ',' : '') . 'efg'; 

$query = "INSERT INTO subscriber (RandomCode, Email, CreateDate, UpdateDate "; 

if ($num != 0) { 
    $query .= ', ' . $string; 
} 

$query .= ") VALUES (?, ?, ?, ?, CURDATE(), ''"; 

if ($num != 0) { 
    $query .= ', ' . $stringResult; 
} 

$query .= ")"; 
+1

値を割り当てるには、 'echo'は必要ありません。画面に印刷するためにエコーする – safarov

+0

** SQLインジェクション**を避けるために、$ _POST-varから取得したパラメータを必ずチェックしてください! – luukes

答えて

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 .= ")"; 

あなたは文字列をguildingして停止し、決定を下す必要がある、のように、あなたは、文字列を終了する必要があり、連結必要に応じて文字列を入力し、残りの文字列を末尾に連結します。完了するまで、文字列を終了し、パーツを連結し続ける。

文字列にnull値を追加する場合は、空の文字列を追加する場合と同じです('')。

$string "mystring" . NULL . "morestring"; //result is "mystringmorestring" 
$string "mystring" . "" . "morestring"; //result is "mystringmorestring" 

結果の文字列はまったく同じです。一方、NULL!== ""(NULLを意味し、 ""は同じ型ではないので同一ではありません)、結果の文字列が続く限り同じです。

+0

{$ attribute ['Attribute'] = '';} 文字列の結果で、何も表示されません。なぜですか? –

0

あなたはインライン三元を使用することができますすでにPHPに入っています。文字列はmysqlハンドラにそのまま出力されます。あなたが代わりにやりたいことは、変数を設定して文字列に結果を追加するだけです。

$firstAddition = ($num!=0) ? ','.$string : ''; 
$secondAddition = ($num!=0) ? ','.$stringResult : ''; 

次に、クエリを作成するときに、これらの新しい変数を連結するだけです。

0

あなたは持っている問題は、あなたがしたとき<?php ?>をオープンしようとしているということです

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を確実に消毒してください。

関連する問題