2015-10-06 43 views
1

余米试图摆脱尾随使用装饰逗号我的SQL statemen,但它似乎没有工作PHP修剪工作不

if(isset($_POST['report'])){ 
    //==== 
    $sql = 'INSERT INTO weekly_repo (hospnme, disease, week, under5, above5, dat) VALUES '; 
    $week = intval($_POST['current_week']); 
    $diseases = $_POST['diseases']; 

    foreach($diseases as $disease){ 

     $sql .= ' ("' . filterString($_POST['hospital']). '", "' . filterString($disease['disease']) . '", ' . $week . ', ' . intval($disease['under_5']) . ', ' . intval($disease['over_5']) . ', NOW()), '; 

    } 
    $sql = trim($sql, '\,'); 
    // ended up doing this 
    //$sql = substr($sql, 0, strrpos($sql, ',')) . ';'; 
    $stmt = $conn->query($sql); 

} 
+0

摆脱斜线。你不需要它。 $ sql = trim($ sql,',');或者只是使用'$ sql = substr($ sql,-1)'。 –

+0

既然有一个额外的空间,你需要'rtrim(...,“,”)'。更好的是,建立一个数组,当你有所有的数据对时,把它加入到字符串中。这避免了修剪泥泞。 – mario

+0

谢谢哥们!但在PHP手册中他们逃脱了 – peter

回答

2

你不需要逃避\逗号。一个更好的办法是建立一个数组,然后implode()

foreach($diseases as $disease){ 
    $sql[] = ' ("' . filterString($_POST['hospital']). '", "' . filterString($disease['disease']) . '", ' . $week . ', ' . intval($disease['under_5']) . ', ' . intval($disease['over_5']) . ', NOW()), '; 
} 
$sql = implode(',', $sql);