2014-01-31 44 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