Php 从MySQL表中获取列名

Php 从MySQL表中获取列名,php,mysql,sql,Php,Mysql,Sql,我的MySQL数据库中有一个表,如下所示: Table: VAAW Columns: ID int(11) PK AI Voornaam varchar(45) Achternaam varchar(45) Adres varchar(45) Woonplaats varchar(45) 我在以下php代码中使用此表: $strSQL = "SELECT * FROM NAW.VAAW"; $objQuery = mysql_query($strSQL);

我的MySQL数据库中有一个表,如下所示:

Table: VAAW
Columns:
ID  int(11) PK AI
Voornaam    varchar(45) 
Achternaam  varchar(45) 
Adres   varchar(45) 
Woonplaats  varchar(45) 
我在以下php代码中使用此表:

$strSQL     = "SELECT * FROM NAW.VAAW";
$objQuery   = mysql_query($strSQL);
while($objResult = mysql_fetch_array($objQuery))
{
$Voornaam   = $objResult["Voornaam"];
$Achternaam = $objResult["Achternaam"];
$Adres      = $objResult["Adres"];
$Woonplaats = $objResult["Woonplaats"];

$string     = $_POST['naam'];

$vaaw       = array("(voornaam)", "(achternaam)", "(woonplaats)", "(adres)");
$vervang    = array("$Voornaam", "$Achternaam", "$Woonplaats","$Adres");

echo str_replace($vaaw, $vervang, $string);
echo '<br>';
}

因此,我的问题是,是否有任何方法可以为第1列、第2列等设置某种标准,这样我就可以在代码中添加该标准,而不必每次更改列名时都更改源代码。也许有一个查询函数可以做到这一点?我知道这个问题有点模糊,但我希望你能理解,如果你不能在评论中自由提问的话。任何帮助都将是伟大的,因为我不知道如何做到这一点

注意:
我知道我不应该使用mysql,稍后我会切换到PDO。因此,请不要再提这一点。

您可以通过以下索引调用列:

$Voornaam  = $objResult[0]; //if the first column of the table is "voornaam"
但是你必须知道列的顺序


该函数可以有第二个参数,如:MYSQL\u ASSOC、MYSQL\u NUM、et MYSQL\u BOTH默认值为MYSQL\u BOTH,它返回一个数组,每个列都有一个键,一个键有列名,另一个键有列索引。

您可以通过这些索引调用列,如:

$Voornaam  = $objResult[0]; //if the first column of the table is "voornaam"
但是你必须知道列的顺序

该函数可以有第二个参数,如:MYSQL\u ASSOC、MYSQL\u NUM、et MYSQL\u BOTH默认值为MYSQL\u BOTH,它返回一个数组,每个列包含一个键,一个键包含列名,另一个键包含列索引。

如果使用
print\r($objResult)
您将看到使用
数字键和
字符串键都有结果

因此,您可以使用
$Voornaam=$objResult[“Vnaam”]
而不是
$Voornaam=$objResult[0]

如果您使用
print\r($objResult)
您将看到使用
数字键和
字符串键都有结果


因此,您可以使用
$Voornaam=$objResult[“Vnaam”]
而不是
$Voornaam=$objResult[0]

您可以使用mysql*\u fetch\u row以枚举数组的形式获取结果。还可以使用系统表(在信息架构中)获取列详细信息。但是我建议,更改列名是需要避免的,任何避免这种情况的方法都会导致严重问题,这将破坏可读性和/或性能。
I(…)不必每次更改列名时都更改源代码。要点是:不必更改列名。标准是正确设计数据库,不更改名称。实际上,列的名称并不重要,因此不需要更改它们的名称,除非在前端显示该名称。在这种情况下,请更改接口!您可以使用mysql*\u fetch\u行以枚举数组的形式获取结果。还可以使用系统表(在信息架构中)获取列详细信息。但是我建议,更改列名是需要避免的,任何避免这种情况的方法都会导致严重问题,这将破坏可读性和/或性能。
I(…)不必每次更改列名时都更改源代码。要点是:不必更改列名。标准是正确设计数据库,不更改名称。实际上,列的名称并不重要,因此不需要更改它们的名称,除非在前端显示该名称。在这种情况下,请更改接口!还要注意的是,他想用这个,因为不知怎么的,他改变了很多桌子。这样,每次添加列时都必须更改索引。(注意:您没有在末尾添加的列,但介于两者之间)您是对的@NiekvanderSteen。为了更具动态性,您可以使用配置文件,在其中定义表中每列的索引。。因此,与其使用
$objResult[0]
不如使用
$objResult[$voornamidex]
,其中
$voornamidex
可以是0、1、2,具体取决于表的修改。好吧,让我解释一下我使用它的目的。我有一个表格,我可以在文本框中添加一些tekst,当我提交它时,它会回显结果。例如,如果列“Voornaam”包含行“Jack”,当我在文本框中键入我的表单:Hey(Voornaam)时,它应该输出:Hey Jack。如果我使用你的解决方案,它会输出:嘿,1,还要注意,他想使用这个,因为不知怎么的,他改变了他的桌子很多。这样,每次添加列时都必须更改索引。(注意:您没有在末尾添加的列,但介于两者之间)您是对的@NiekvanderSteen。为了更具动态性,您可以使用配置文件,在其中定义表中每列的索引。。因此,与其使用
$objResult[0]
不如使用
$objResult[$voornamidex]
,其中
$voornamidex
可以是0、1、2,具体取决于表的修改。好吧,让我解释一下我使用它的目的。我有一个表格,我可以在文本框中添加一些tekst,当我提交它时,它会回显结果。例如,如果列“Voornaam”包含行“Jack”,当我在文本框中键入我的表单:Hey(Voornaam)时,它应该输出:Hey Jack。如果我使用你的解决方案,它将输出:嘿1
$Voornaam  = $objResult[0]; //if the first column of the table is "voornaam"