如何将MySQL表行分配给不同的变量


How to assign MySQL table rows to different variables?

我有一个只有3列的MySQL表。该列中的数据按sub_id编号排序,如下所示:

sub_id | field_name | field_val
1 ------- carname -------ford
1 ------- driver ------- michael
1 ------- licence -------123
2 ------- carname -------bmw
2 ------- driver ------- robert
2 ------- licence -------321

对于使用表格,我有以下代码:

   $link = mysql_connect("xxx", "xxx", "xxx");
   mysql_select_db("xxx");
   mysql_query ('SET NAMES utf8');
   mysql_query ('SET CHARACTER SET utf8');
   $query = "select sub_id,field_name,field_val from wp_cformsdata WHERE sub_id IN ($ID)";
   $result = mysql_query($query);

它按照所需的ID给了我一组行。我知道有这样一个混乱的表很不舒服,但它是由插件自动创建的问题是如何将得到的每一行分配给不同的变量?我想用这个变量来填充html文档抱歉英语不好:)

您只需要迭代所有结果,手动将字段名和sub_id与您期望的内容进行比较,然后将结果分配给条件中的变量。

就我个人而言,我会对其进行迭代,并创建一个sub_id=>字段的数组,因此类似

while($row = mysql_row($result))
    $users[$row['sub_id']][$row['field_name']] = $row['field_value']

语法是错误的,因为我记不清mysql_*的确切语法,但你明白了。

"相反,应该使用MySQLi或PDO_MySQL扩展。"从文档中可以看出,您正在使用的那些方法是不推荐使用的。

以下是获取每个项目的方法,因为它是一个结果集,所以必须循环。

while ($row = mysql_fetch_assoc($result)) {
    $car_name = $row['carname'];
    $driver =  $row['driver'];
}

依此类推。

您不需要不同的变量。我建议在你的PHP代码中使用switch

$link = mysql_connect("xxx", "xxx", "xxx");
mysql_select_db("xxx");
mysql_query ('SET NAMES utf8');
mysql_query ('SET CHARACTER SET utf8');
$query = "select sub_id,field_name,field_val from wp_cformsdata WHERE sub_id IN ($ID)";
$result = mysql_query($query);
while($row = mysql_fetch_assoc($result))
{
    switch($row['field_name'])
    {
        case 'carname':
            // do something
            break;
        case 'driver':
            // do something else
            break;
        // add more "case" here
        default:
            // do the default action here
    }
}

此外,请阅读本页以帮助您选择要使用的函数,而不是不推荐使用的mysql_*函数。

据我所知,您需要像循环这样简单的东西来读取文档的行。

<?php
$link = mysql_connect("xxx", "xxx", "xxx");
mysql_select_db("xxx");
mysql_query ('SET NAMES utf8');
mysql_query ('SET CHARACTER SET utf8');
$query = "select sub_id,field_name,field_val from wp_cformsdata WHERE sub_id IN ($ID)";
$result = mysql_query($query);
while($rows=mysql_fetch_array($result)){
?>
<div> <?php echo $rows['sub_id'];?> </div>
<div> <?php echo $rows['field_name'];?> </div>
<div> <?php echo $rows['field_val'];?> </div>
<?
}
mysql_close();
?>

我希望这能有所帮助。您也可以使用mysql_fetch_assoc()。