Is there a way to write this bunch of if statements shorter?
if($data==name){
$sql1 = "UPDATE people set firstname = ? WHERE id = '$id'";
$q = $pdo->prepare($sql1);
$q->execute(array($name));
}
if($data==age){
$sql2 = "UPDATE people set age = ? WHERE id = '$id'";
$q = $pdo->prepare($sql2);
$q->execute(array($age));
}
if($data==color1){
$sql3 = "UPDATE people set paint1 = ? WHERE id = '$id'";
$q = $pdo->prepare($sql3);
$q->execute(array($color));
}
if($data==color2){
$sql4 = "UPDATE people set paint2 = ? WHERE id = '$id'";
$q = $pdo->prepare($sql4);
$q->execute(array($color));
}
if($data==color3){
$sql5 = "UPDATE people set paint3 = ? WHERE id = '$id'";
$q = $pdo->prepare($sql5);
$q->execute(array($color));
}
I tried to make a function
function data($info, $information, $name){
if($data==$info){
$sql = "UPDATE people set $information = ? WHERE id = '$id'";
$q = $pdo->prepare($sql);
$q->execute(array($name));
}
}
data(name, firstname, $name);
But it is not working like this, I do not get a result. Maybe because of the variable inside the sql request?
Php switch, from the docs:
if ($i == 0) {
echo "i equals 0";
} elseif ($i == 1) {
echo "i equals 1";
} elseif ($i == 2) {
echo "i equals 2";
}
// same as
switch ($i) {
case 0:
echo "i equals 0";
break;
case 1:
echo "i equals 1";
break;
case 2:
echo "i equals 2";
break;
}
Should be what you are looking for. http://php.net/manual/en/control-structures.switch.php
<?php
switch($data){
case "name":
$field = "firstName";
break;
case "age":
$field = "age";
break;
case "color1":
$field = "paint1";
break;
case "color2":
$field = "paint2";
break;
case "color3":
$field = "paint3";
break;
default:
echo 'Invalid selection';
exit;
break;
}
$sql = "UPDATE people set $field = ? WHERE id = '$id'";
$q = $pdo->prepare($sql);
$q->execute(array($name));
try to use if elseif
because if you use if
statement for each one it taking long time. so when first condition true means no need to check another if condition so use if elseif
statement. or use switch case
if($data==name){
$sql1 = "UPDATE people set firstname = ? WHERE id = '$id'";
$q = $pdo->prepare($sql1);
$q->execute(array($name));
}
else if($data==age){
$sql2 = "UPDATE people set age = ? WHERE id = '$id'";
$q = $pdo->prepare($sql2);
$q->execute(array($age));
}
else if($data==color1){
$sql3 = "UPDATE people set paint1 = ? WHERE id = '$id'";
$q = $pdo->prepare($sql3);
$q->execute(array($color));
}
else if($data==color2){
$sql4 = "UPDATE people set paint2 = ? WHERE id = '$id'";
$q = $pdo->prepare($sql4);
$q->execute(array($color));
}
else if($data==color3){
$sql5 = "UPDATE people set paint3 = ? WHERE id = '$id'";
$q = $pdo->prepare($sql5);
$q->execute(array($color));
}
else
{
echo "nothing";
}
(OR)
switch ($data) {
case name:
$sql1 = "UPDATE people set firstname = ? WHERE id = '$id'";
$q = $pdo->prepare($sql1);
$q->execute(array($name));
break;
case age:
$sql2 = "UPDATE people set age = ? WHERE id = '$id'";
$q = $pdo->prepare($sql2);
$q->execute(array($age));
break;
case color1:
$sql3 = "UPDATE people set paint1 = ? WHERE id = '$id'";
$q = $pdo->prepare($sql3);
$q->execute(array($color));
break;
case color2:
$sql4 = "UPDATE people set paint2 = ? WHERE id = '$id'";
$q = $pdo->prepare($sql4);
$q->execute(array($color));
break;
case color3:
$sql5 = "UPDATE people set paint3 = ? WHERE id = '$id'";
$q = $pdo->prepare($sql5);
$q->execute(array($color));
break;
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.