2012-03-23 60 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函數。我可以迴應一個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語句中。

謝謝。

+1

如果你想分配值,你不需要'回聲'。回聲使用打印屏幕 – safarov 2012-03-23 21:06:23

+0

一定要檢查您從$ _POST-VAR獲得的參數,以避免** SQL注入**! – luukes 2012-03-23 21:11:38

回答

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

這是壞的;你不需要echo來添加字符串,你需要將它連接在一起。具體方法如下:

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

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

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

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

$query .= ")"; 

當你guilding一個字符串,並需要停止並作出決定,如「?這是零,那麼做到這一點,現在繼續」,你需要結束的字符串,連接一字符串,如果需要的話,然後將其餘的字符串連接到結尾。繼續結束字符串並連接部分,直到完成。

如果要向字符串添加空值,則與添加空字符串相同 - ''

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

生成的字符串是完全一樣的。雖然NULL!==「」(表示NULL和「」不相同,因爲它們不是相同的類型),只要生成的字符串是一樣的。

+0

if(!isset($ set ['Attribute'])) {$ set ['Attribute'] ='';} 在字符串result中,我看不到任何東西,爲什麼? – 2012-03-23 21:30:33

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

你的問題是,你試圖打開<?php ?>你的時候已經在PHP中。該字符串將按原樣輸出到mysql處理程序。你只需要設置一個變量,然後將結果添加到你的字符串中即可。

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

然後,當你建立你的查詢時,只需連接這些新的變量。

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。

相關問題