php - case statement in INSERT INTO statement -


i have following register.php code

<?php if( $_post ) {   include("php_connect/php_connect.php");    $start_year  = $_post['start_year'];   $start_month = $_post['start_month'];   $start_day = $_post['start_day'];   $start_hour = $_post['start_hour'];   $start_minute = $_post['start_minute'];   $place = $_post['place'];   $salah = $_post['salah'];   $rakat = implode(",", $_post['rakat']);     $query = "insert performed_salah             (year, month, date, time, place, prayer, rakat, reg_date) values             ('$start_year', '$start_month', '$start_day', ('$start_hour:$start_minute'), '$place', '$salah', '$rakat', now())";    if ($conn->query($query) === true) {     echo "new record created successfully"; } else {     echo "error: " . $query . "<br>" . $conn->error; }  $conn->close(); } ?> 

in table have column performance. trying create case statement looks like

case when prayer='a' , rakat=('rakat-a,rakat-b') performance = 100%      when prayer='a' , rakat=('rakat-a') or rakat=('rakat-b') performance = 50%      when prayer='b' , rakat=('rakat-a,rakat-b,rakat-c,rakat-d) performance = 100% when prayer = 'b' , rakat=('rakat-a,rakat-b,rakat-c') performace = 75% when prayer = 'b' , rakat=('rakat-a,rakat-b') performace = 50% when prayer = 'b' , rakat=('rakat-a') performace = 25% 

how go making it?

i tried got error:

"insert performed_salah('$start_year', '$start_month', '$start_day', ('$start_hour:$start_minute'), '$place', '$salah', '$rakat',  (case when prayer = 'fajar' , (rakat='2sunnat,2faradh') " . '100%' . "           when prayer = 'fajar' , (rakat='2sunnat' or rakat='2faradh') " . ' '50%' . "end) '$performance', now())"; 

this query:

insert performed_salah(year, month, date, time, place, prayer, rakat, reg_date)      values  ('$start_year', '$start_month', '$start_day', ('$start_hour:$start_minute'), '$place', '$salah', '$rakat', now()); 

it makes sense. second query makes no sense @ all. but, 1 fundamental problem case statement cannot use column names table. can after fact, using update, in insert, need variables used insert. this:

insert performed_salah(year, month, date, time, place, prayer,             rakat, reg_date, performance)      values  ('$start_year', '$start_month', '$start_day', ('$start_hour:$start_minute'),               '$place', '$salah', '$rakat',                (case when '$prayer' = 'fajar' , '$rakat' = '2sunnat,2faradh'                      '100%'                         when '$prayer' = 'fajar' , '$rakat' in ('2sunnat', '2faradh')                      '50%'                 end),               now()); 

there still lots of room improvement. field performance looks number, should store way. sql code safer if use parameters, rather explicitly putting values in string. might give idea on how proceed.


Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -