2015-10-06 61 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);