Str_Replace包含查询结果

时间:2013-06-05 07:16:03

标签: php str-replace

我有一个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。

我已经尝试了很多东西来实现这个目的,但我还没有弄清楚如何做到这一点,它已经困扰了我近两天了。如果有人知道某项功能或方法,那将非常有用!

2 个答案:

答案 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>";
}