Php 如何用更短的方式编写大量类似的if语句?
有没有办法把这些if语句写得更短Php 如何用更短的方式编写大量类似的if语句?,php,mysql,if-statement,Php,Mysql,If Statement,有没有办法把这些if语句写得更短 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 =
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));
}
我试着做一个函数
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);
但它不是这样工作的,我没有得到一个结果。可能是因为sql请求中的变量?Php开关,来自文档:
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;
}
应该是你要找的 Php开关,来自文档:
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;
}
应该是你要找的
尝试使用if-elseif
,因为如果对每一个使用if
语句,则需要很长时间。所以当第一个条件为true时,意味着不需要检查另一个if条件,所以使用if-elseif
语句。或使用开关盒
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;
}
尝试使用if-elseif
,因为如果对每个语句使用if
语句,则需要很长时间。所以当第一个条件为true时,意味着不需要检查另一个if条件,所以使用if-elseif
语句。或使用开关盒
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;
}
我认为您正在寻找切换:如果elseif
比您当前的代码更有效,那么切换
更易于阅读和遵循。在您的函数中,$data
是什么?动态SQL是一种方法,添加列名作为变量您的函数应该可以工作。似乎未声明$id
,也未声明$data
我想您正在寻找切换:如果其他切换
比您当前的代码效率更高,则切换
更易于阅读和遵循。在您的函数中,$data
是什么?动态SQL是一种方法,将列名作为变量添加到函数中。似乎未声明$id
,也未声明$data