我有一个MYSQL表,其中包含用户提供的服务列表:
这些列中的Enum值可以为0或1。 0代表未提供的服务,而1代表提供的服务。
Cleaning Tour Guide Cooking Parties
0 1 0 1
然后我在MYSQL中运行以下查询以获取表中的行:
<?php $myBio = $conn->query("SELECT * FROM user_data, user_services WHERE user_data.user_id = user_services.user_id AND user_id = $p_id");
if ($myBio->num_rows > 0) {
$row = $myBio->fetch_assoc();?>
我想生成用户提供的服务列表(该服务的值大于0)-并用逗号分隔列表,如下所示:
Tour Guide, Parties
我试图通过使用数组来做到这一点:
$os = array(if($row['cleaning'] > 0) { echo 'cleaning';}, if($row['tour'] >0) { echo 'Tour Guide'; });
我正在尝试使用PHP if语句在将服务添加到我的列表之前破译服务是0还是1。
我不认为可以在数组中组合php if语句。
请有人可以告诉我如何实现我想要的结果吗?预先感谢
答案 0 :(得分:2)
使用array_keys()
和可选的搜索参数:
$services = array_keys($row, 1);
示例:
$row = [
'Cleaning' => 0,
'Tour Guide' => 1,
'Cooking' => 0,
'Parties' => 1,
];
$services = array_keys($row, 1);
var_export($services);
结果:
array (
0 => 'Tour Guide',
1 => 'Parties',
)
答案 1 :(得分:0)
这样的东西会达到你想要的吗?
$results=array();
if ($row['cleaning']>0) $results[]='Cleaning';
if ($row['tour']>0) $results[]='Tour Guide';
// ...
另外,请注意@tadman对准备好的语句的评论!
答案 2 :(得分:0)
如果您的数据库列中有语音名称,则可以这样操作:
<?php
$arrayServices = array();
$arrayAllServices = array('Cleaning','Tour Guide','Cooking','Parties');
foreach($arrayAllServices as $service) {
if($row[$service] > 0) {
$arrayServices[] = $service;
}
}
$sServices = join(', ', $arrayServices);
echo $sServices;
如果口语名称与列名称不同,则需要第二个数组来查找翻译。
答案 3 :(得分:0)
<?php
$myResults = array();
$myBio = $conn->query("SELECT * FROM user_data, user_services WHERE user_data.user_id = ? AND user_id = ?");
$stmt->bind_param("ss",$user_services.user_id,$p_id);
$stmt->execute();
$result = $stmt->get_result();
if($result->num_rows === 0) exit('No rows');
while($row = $result->fetch_assoc())
{
$tempArray = array();
$Cleaning = $row['Cleaning'];
$Tour_Guide = $row['TourGuide'];
$Cooking = $row['Cooking'];
$Parties = $row['Parties'];
if($Cleaning == 1)
array_push($tempArray,$Cleaning)
if($Cleaning == 1)
array_push($tempArray,$Cleaning)
if($Cooking == 1)
array_push($tempArray,$Cooking )
if($Parties == 1)
array_push($tempArray,$Parties )
array_push($myResults,$tempArray);
}
?>
然后您将获得myResult
数组,该数组将是一个数组数组,然后可以在子数组上循环以检查值并构造要创建的字符串。