我有一个MySql数据库,在表'Klant'中我有列名:
ID
Naam
Email
Soort
Status
我使用此查询获取列名称:
$strSQL = "select column_name from information_schema.columns where table_name='Klant'";
我正在通过这个简单的查询从表中选择数据:
$strSQL1 = "SELECT * FROM NAW.Klant";
我想要做的是搜索文本并使用str_replace我想用来自DB的数据替换column_names。例如:
如果我输入Hello Naam, your email adress is Email
,我希望它显示Hello Robert your email adress is robert@gmail.com
。我会把它放在循环中为每一行做。我目前正在使用这个:
$ID = $row['Klant_ID'];
$Naam = $row['Naam'];
$Email = $row['Email'];
$Soort = $row['Soort'];
$Naam = $row['Status'];
$vaaw = array("[ID]","[Naam]", "[Email]", "[Soort]", "[Status]");
$vervang = array("$ID","$Naam", "$Email", "$Soort", "$Status");
echo str_replace($vaaw, $vervang, $message);
我不想再使用它的原因是因为如果我需要更改/添加/删除列,代码仍然可以工作。 (我知道改变列是一个坏主意,但你永远不知道。)而且这段代码也适用于其他Tables / DB。
我已经尝试了很多东西来实现这个目的,但我还没有弄清楚如何做到这一点,它已经困扰了我近两天了。如果有人知道某项功能或方法,那将非常有用!
答案 0 :(得分:1)
试试这个:
<?php
$strSQL = "select column_name from information_schema.columns where table_name='Klant'";
$con=mysqli_connect('host', 'username', 'password', 'db');
if(!$con){
//error
}
$result=mysqli_query($con,$strSQL);
if(!$result){
//error
}
$table_columns=array();
//$row=mysqli_fetch_assoc($result);
while($row=mysqli_fetch_assoc($result))
{
$table_columns[]=$row['column_name'];
}
$query="select * from NAW.Klant "; //limit 10";
$result=mysqli_query($con,$query);
if(!$result){
//error
}
$greeting_text="";
while($row=mysqli_fetch_assoc($result)){
$greeting_text.= (isset($row['naam']))? "Hello {$row['naam']}":""; // because you want the 'hello'
for($i=1;$i< count($table_columns);$i++){
$greeting_text.=" Your ".$table_columns[$i]." is ".$row[$table_columns[$i]].", ";
}
$greeting_text.="\n";
}
echo $greeting_text; //test your result
如果您有预定义的字符串模板(由列名称或其值替换),则需要在表列中发生任何更改时更改该代码。我只是选择根据列的可用性动态生成字符串。但是如果你需要使用预定义的字符串,那么这样做并不困难。
答案 1 :(得分:1)
我使用评论中HamZa链接的脚本解决了这个问题。由于他不会将其作为答案发布,我会自己做,因为我认为它可以帮助其他人。
解决问题的代码是:
$connection = mysql_connect('localhost', 'root', 'pw') or die('couldn\'t connect to the database.<br>'. mysql_error());
mysql_select_db("NAW");
$strSQL1 = "SELECT * FROM Klant";
$result = mysql_query($strSQL1, $connection) or die('Something went wrong with the query.<br>'. mysql_error());
while($row = mysql_fetch_assoc($result)){
$text = $_POST['naam'];
foreach($row as $k => $v){
$text = str_replace('['.$k.']', $v, $text);
}
echo $text;
echo "<br>";
}