在获取期间将值 PHP 变量分配为列名
Assign value PHP variable as column name during fetching
我正在尝试使用 PHP 从 MySQL table 中的列中获取值。变量 $batch_id
是动态的,即它根据请求更改列名。比如说,它可以采用 'Batch1' 或 'Batch10' 这样的值。我能够将列名提取到 $batch_id
变量中,但是当我传递列名时,说 'Batch10' 数组 $batch_Value
填充了 'Batch10' 而不是该列的值。我确信必须有一个简单的解决方案,但我被卡住了。任何帮助将不胜感激。我正在使用以下代码。
$batch_Value = array();
if($num>0){
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
extract($row);
$batch_Value[] = $batch_id;
}
}
左边是我得到的,右边是预期的结果。但是当我直接使用列名时我得到的是右手
获取数据作为数字索引数组而不是关联数组。另外,不要使用 extract,它不安全,因为它会覆盖现有变量。
$batch_Value = array();
if($num>0){
while ($row = $stmt->fetch(PDO::FETCH_NUM)){
$batch_Value[] = $row[0];
}
}
或者如果所需的列不是第一个,则可以在 $row
数组中找到值(这是一个关联数组,有关详细信息,请参阅 print_r($row);
),使用以下:
$batch_Value = array();
if($num>0){
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
$batch_Value[] = $row[$batch_id];
}
}
切勿在您的代码中使用 extract
。这会导致很多问题。
PDO 有很多有用的获取模式。我看不出有任何理由使用 while
循环。
您可以像这样从单个列中获取值:
$batch_Value = $stmt->fetchAll(PDO::FETCH_COLUMN);
这将为您提供一个一维数组,其中包含第一列中的值列表。
如果你想获取整行,按第一列索引,那么你可以使用PDO::FETCH_UNIQUE
:
$batch_Value = $stmt->fetchAll(PDO::FETCH_UNIQUE);
有关所有获取模式的说明,请参阅 https://phpdelusions.net/pdo/fetch_modes
我正在尝试使用 PHP 从 MySQL table 中的列中获取值。变量 $batch_id
是动态的,即它根据请求更改列名。比如说,它可以采用 'Batch1' 或 'Batch10' 这样的值。我能够将列名提取到 $batch_id
变量中,但是当我传递列名时,说 'Batch10' 数组 $batch_Value
填充了 'Batch10' 而不是该列的值。我确信必须有一个简单的解决方案,但我被卡住了。任何帮助将不胜感激。我正在使用以下代码。
$batch_Value = array();
if($num>0){
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
extract($row);
$batch_Value[] = $batch_id;
}
}
左边是我得到的,右边是预期的结果。但是当我直接使用列名时我得到的是右手
获取数据作为数字索引数组而不是关联数组。另外,不要使用 extract,它不安全,因为它会覆盖现有变量。
$batch_Value = array();
if($num>0){
while ($row = $stmt->fetch(PDO::FETCH_NUM)){
$batch_Value[] = $row[0];
}
}
或者如果所需的列不是第一个,则可以在 $row
数组中找到值(这是一个关联数组,有关详细信息,请参阅 print_r($row);
),使用以下:
$batch_Value = array();
if($num>0){
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
$batch_Value[] = $row[$batch_id];
}
}
切勿在您的代码中使用 extract
。这会导致很多问题。
PDO 有很多有用的获取模式。我看不出有任何理由使用 while
循环。
您可以像这样从单个列中获取值:
$batch_Value = $stmt->fetchAll(PDO::FETCH_COLUMN);
这将为您提供一个一维数组,其中包含第一列中的值列表。
如果你想获取整行,按第一列索引,那么你可以使用PDO::FETCH_UNIQUE
:
$batch_Value = $stmt->fetchAll(PDO::FETCH_UNIQUE);
有关所有获取模式的说明,请参阅 https://phpdelusions.net/pdo/fetch_modes