2014-01-31 42 views
0
$query = "INSERT INTO api_fails (file, code, url, date) VALUES (?, ?, ?, ".time().")"; 

$stmt = $mysqli->stmt_init(); 
if(!$stmt->prepare($query)) { 
    echo("Failed to prepare statement.<br />\n"); 
} else { 
    $file = $_GET['f']; 
    $code = $_GET['c']; 
    $url = $_GET['u']; 
    $stmt->bind_param("sis", $file, $code, $url); 
    if($stmt->execute()) { 
     echo("Inserted.<br />\n"); 
    }else { 
     echo("Didn't insert.<br />\n"); 
    } 
} 

我發現如果有下列變量都沒有設置,插入失敗...綁定帕拉姆失敗,空變

$file = $_GET['f']; 
    $code = $_GET['c']; 
    $url = $_GET['u']; 

如何設置我的插入,這樣,如果變量ISN沒有設置它只是沒有插入到該領域?

回答

1

如果沒有設置他們只是分配空值的變量:

$file = (isset($_GET['f'])) ? $_GET['f'] : '' ; 
$code = (isset($_GET['c'])) ? $_GET['c'] : '' ; 
$url = (isset($_GET['u'])) ? $_GET['u'] : '' ; 
+0

笑,哇,這工作。我認爲''''會和'null'一樣,不要猜測。謝謝。我會盡快接受8分鐘,它讓我:) PS是否有更好的方法來做到這一點?如果其中一個變量是'null',整個插入失敗,似乎有點兒有限。 – Rawr

+0

是的,其實我會堅持一點,看看有人有更優雅的解決方案。我有一些有85個字段的大型查詢需要填寫數據。我寧願不要再增加85行來將變量設置爲''''。 – Rawr

+0

最糟糕的情況我將把所有這些插入語句放入一個函數中,並設置每個參數的默認值,這仍然是一個巨大的麻煩,因爲我無法傳遞一個85值的數組,而是必須具有一個85參數。 – Rawr