0

我的 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>';
}

我用它做什么:
我有一个表单,我可以在文本框中添加一些 tekst,当我提交它时会回显结果。例如,如果“Voornaam”列包含“Jack”行,并且当我在表单中的文本框中输入:Hey (voornaam),它应该输出:Hey Jack。

我真的不知道如何问这个问题,所以我举个例子。如果我出于某种原因想要更改数据库中的列名,我将不得不根据列名更改来更改此源代码。

这个例子:

如果我将列名“voornaam”更改为“Vnaam”,我也必须更改

$Voornaam  = $objResult["Voornaam"];

$Voornaam  = $objResult["Vnaam"];

所以我的问题是,是否有任何方法可以为第一列、第二列等设置某种标准,所以我可以在代码中添加它,并且每次更改列名时都不必更改源代码。也许有一个查询功能可以做到这一点?我知道这个问题有点含糊,但我希望你能理解,如果不能随时在评论中提问。任何帮助都会很棒,因为我不知道该怎么做!

注意: 我知道我不应该使用 mysql_*,我稍后会切换到 PDO。所以请不要再提这个了。

4

2 回答 2

4

如果你使用print_r($objResult),你会看到你有两个numericalstrings键的结果。

所以,而不是$Voornaam = $objResult["Vnaam"]你可以使用$Voornaam = $objResult[0]

于 2013-03-27T09:36:35.347 回答
1

您可以通过那里的索引调用列,例如:

$Voornaam  = $objResult[0]; //if the first column of the table is "voornaam"

但是你必须知道列顺序......

mysql_fetch_array函数可以有第二个参数,如:MYSQL_ASSOC、MYSQL_NUM 等 MYSQL_BOTH默认为 MYSQL_BOTH,它为每一列返回一个数组,一个带有列名称的键,另一个带有列索引的键。

于 2013-03-27T09:36:24.920 回答