2015-10-05 2 views
-2

Мне нужна помощь, помогающая делать инструкцию if/else в mysql Оператор if работает правильно, но оператор buggs else. Я Сотовая связь говорит мнеОшибка в инструкции if/else MySQL

«Синтаксическая ошибка: синтаксическая ошибка, неожиданный„еще“(T_ELSE) в /var/www/domane/public_html/app/save.php на линии 48» - которая является еще линия

Он должен получить текущее значение строки, а затем добавить его в новое значение и обновлять его

<?php 

$dsn = "databasename"; 
$username="username"; 
$password="password"; 

try { 
    $conn = new PDO($dsn, $username, $password); 
    $conn ->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
} catch(PDOException $e) { 
    echo "Connection failed: ".$e->getMessage(); 
} 

//------------------------ Does the category already exist in dietTbl? ------------------------- 
$sql="SELECT COUNT(*) AS subjectcount FROM dietTbl WHERE day=CURDATE()"; 

try { 
          $st = $conn->prepare($sql); 
          $st->bindValue(":mainsubject",$mainSubject, PDO::PARAM_STR); 
          $st->execute(); 
          $row=$st->fetch(); 
          $subjectcount=$row["subjectcount"]; // if >0 the yes, the category already exists 
} catch (PDOException $e) { 
          echo "Server Error - try again!".$e->getMessage(); 
}; 

//------------------------ If it dosn't, insert it into dietTbl ------------------------- 
if ($subjectcount==0) { 

$sql="INSERT INTO dietTbl (day, vegetables, fullgrain, milk, water) values (:day, :vegetables, :fullgrain, :milk, :water)"; 

try { 

    $st = $conn->prepare($sql); 
    $st->bindValue(":day",$_POST["day"], PDO::PARAM_STR); 
    $st->bindValue(":vegetables",$_POST["vegetables"], PDO::PARAM_STR); 
    $st->bindValue(":fullgrain",$_POST["fullgrain"], PDO::PARAM_STR); 
    $st->bindValue(":milk",$_POST["milk"], PDO::PARAM_STR); 
    $st->bindValue(":water",$_POST["water"], PDO::PARAM_STR); 

    $st->execute(); 
          } catch (PDOException $e) { 
                  echo "Server Error - try again!".$e->getMessage(); 
          } 
}; 

//------------------------ If it already exists, update dietTbl ------------------------- 
else { 

SELECT SUM(vegetables) AS totalvegetables, SUM(fullgrain) AS totalfullgrain, SUM(milk) AS totalmilk, SUM(water) AS totalwater FROM dietTbl 



    $sql="UPDATE INTO dietTbl (vegetables, fullgrain, milk, water) values (:vegetables+totalvegetables, :fullgrain+totalfullgrain, :milk+totalmilk, :water+totalwater)"; 

try { 

    $st = $conn->prepare($sql); 
    $st->bindValue(":vegetables",$_POST["vegetables"], PDO::PARAM_STR); 
    $st->bindValue(":fullgrain",$_POST["fullgrain"], PDO::PARAM_STR); 
    $st->bindValue(":milk",$_POST["milk"], PDO::PARAM_STR); 
    $st->bindValue(":water",$_POST["water"], PDO::PARAM_STR); 
    $st->execute(); 
          } catch (PDOException $e) { 
                  echo "Server Error - try again!".$e->getMessage(); 
          } 




}; 

echo "Information saved"; 
$conn=null; //Close database connection 

?> 
+2

Удалите ';' on line before. – Jens

+0

Спасибо. Избавилась эта ошибка. Является ли это правильным способом хранения существующих значений? Потому что, если не работает «SELECT SUM (овощи) AS totalvegetables, SUM (fullgrain) AS totalfullgrain, SUM (молоко) AS totalmilk, SUM (вода) AS totalwater FROM dietTbl " – Christoffer

+0

Уже видели слишком много ошибок в вашем коде перед тем, как идти на это первое исправление Удалить; из строки 24, 45, 71 – rocky

ответ

0

из этой части кода:

}; 

//------------------------ If it already exists, update dietTbl ---------- 

else { 

удалить ";"

+0

, упомянутый в комментарии уже – rocky

Смежные вопросы