PHP MySQL 列循环是否名称相似?
PHP MySQL Column Loop if name is similar?
我不确定这是否存在于 PHP/MySQL、
我想 return mysql 数据库中动态具有相似名称且它们为 null/"" 的多个列,然后不要 return 该行,因为事实上你不能添加重复的列名我不知道该怎么做?
我正在这样做,但正在寻找一种更动态的方式,因为我不想依赖使用数组,通过传递一串让我们说 "name" 只有这样可能吗?有点像 MySQL select "SELECT * FROM db WHERE name = 'Jack';"
$names = array("name1", "name2", "name3", "name4");
foreach ($names as $value) {
if($row [$value] > 0){
//
}else{
if($row [$value] == null){
//
}else{
echo $row[$value];
}
}
}
这里是数据库的结构——可以说下面的“”是空白的;
id category subcat name1 name2 name3 name4 name5
1 people names jack bob sue anna ""
2 people names name name "" "" ""
3 animals ... .. . .. etc
这是我的 php mysql 查询;
$sql = "SELECT * FROM db WHERE category = 'people'";
$result = $conn->query($sql);
$names = array("name1", "name2", "name3", "name4","name5");
while($row = $result->fetch_assoc()) {
echo $row["subcat"]."<br>";
foreach ($names as $value) {
if($row [$value] > 0){
//
}else{
if($row [$value] == null){
//
}else{
echo $row[$value]."<br>";
}
}
}
}
您想从不同的列中获取多行并且行具有相似的值。但是一个值不能出现两次?并且不能为空?
你可以使用 DISTINCT 语句来检查值是否不为空,你可以在 WHERE 语句之后使用 > IS NOT NULL。所以整个 sql 语句看起来像下面的例子。
SELECT DISTINCT column_name,column_name FROM table WHERE YourColumn IS NOT NULL;
最好的方法是使用单独的 names
table:
item_id name
1 jack
1 bob
1 sue
1 anna
2 name1
2 name2
那你就可以加入原来的table:
SELECT d.id, d.category, d.subcat, n.name
FROM db AS d
JOIN names AS n ON n.item_id = d.id
WHERE d.category = 'people'
ORDER BY d.id
使用您现有的结构,您可以在 PHP:
while ($row = $result->fetch_assoc()) {
echo $row['subcat'] . "<br>";
foreach ($row as $col => $value) {
if (substr($col, 0, 4) == 'name' && $value != '') {
echo $value . "<br>";
}
}
}
也许试试这个:
$sql = "SELECT * FROM db WHERE category = 'people'";
$result = $conn->query($sql);
$names = array("name1", "name2", "name3", "name4","name5");
while($row = $result->fetch_assoc()) {
echo $row["subcat"]."<br>";
foreach ($names as $value) {
if(in_array($value, $names)){
// the value is in the names array
echo $row[$value]."<br>";
...
}else{
// the value is not in the names array
...
}
}
}
我不确定这是否存在于 PHP/MySQL、
我想 return mysql 数据库中动态具有相似名称且它们为 null/"" 的多个列,然后不要 return 该行,因为事实上你不能添加重复的列名我不知道该怎么做?
我正在这样做,但正在寻找一种更动态的方式,因为我不想依赖使用数组,通过传递一串让我们说 "name" 只有这样可能吗?有点像 MySQL select "SELECT * FROM db WHERE name = 'Jack';"
$names = array("name1", "name2", "name3", "name4");
foreach ($names as $value) {
if($row [$value] > 0){
//
}else{
if($row [$value] == null){
//
}else{
echo $row[$value];
}
}
}
这里是数据库的结构——可以说下面的“”是空白的;
id category subcat name1 name2 name3 name4 name5
1 people names jack bob sue anna ""
2 people names name name "" "" ""
3 animals ... .. . .. etc
这是我的 php mysql 查询;
$sql = "SELECT * FROM db WHERE category = 'people'";
$result = $conn->query($sql);
$names = array("name1", "name2", "name3", "name4","name5");
while($row = $result->fetch_assoc()) {
echo $row["subcat"]."<br>";
foreach ($names as $value) {
if($row [$value] > 0){
//
}else{
if($row [$value] == null){
//
}else{
echo $row[$value]."<br>";
}
}
}
}
您想从不同的列中获取多行并且行具有相似的值。但是一个值不能出现两次?并且不能为空?
你可以使用 DISTINCT 语句来检查值是否不为空,你可以在 WHERE 语句之后使用 > IS NOT NULL。所以整个 sql 语句看起来像下面的例子。
SELECT DISTINCT column_name,column_name FROM table WHERE YourColumn IS NOT NULL;
最好的方法是使用单独的 names
table:
item_id name
1 jack
1 bob
1 sue
1 anna
2 name1
2 name2
那你就可以加入原来的table:
SELECT d.id, d.category, d.subcat, n.name
FROM db AS d
JOIN names AS n ON n.item_id = d.id
WHERE d.category = 'people'
ORDER BY d.id
使用您现有的结构,您可以在 PHP:
while ($row = $result->fetch_assoc()) {
echo $row['subcat'] . "<br>";
foreach ($row as $col => $value) {
if (substr($col, 0, 4) == 'name' && $value != '') {
echo $value . "<br>";
}
}
}
也许试试这个:
$sql = "SELECT * FROM db WHERE category = 'people'";
$result = $conn->query($sql);
$names = array("name1", "name2", "name3", "name4","name5");
while($row = $result->fetch_assoc()) {
echo $row["subcat"]."<br>";
foreach ($names as $value) {
if(in_array($value, $names)){
// the value is in the names array
echo $row[$value]."<br>";
...
}else{
// the value is not in the names array
...
}
}
}