来自Mysql DB的Echo php变量

时间:2017-04-30 02:55:56

标签: php html mysql database

这是我的整个代码:

<?php

$query = "SELECT category FROM html where id = '1' ";
$result = mysql_query($query);
//while loop to display mysql table field values in html text boxes
$i = 0;
while ($row = mysql_fetch_row($result)) {
    $count = count($row);
    $y = 0;
    while ($y < $count) {
        $c_row = current($row);
        next($row);
        $y = $y + 1;
    }
    $i = $i + 1;
    $category = $c_row;
}
echo $category;
?>

我使用下面给出的代码显示$ categories变量的值:     类别(&#39;。$ categories;。&#39;) 实际上,上面的代码包括不是直接用php编写的 网页。代码&#34;类别(&#39;。$ categories;。&#39;)&#34;包含在数据库中。因此$类别;无法解析。

我需要的是显示价值:
例如,如果$ categories = Books and Shelf;
我需要,类别(&#39;。$ categories;。&#39;): - 类别(书籍和书架)

在从Mysql Table中选择之前,已在php页面中获取$categories;值。

如何解析插入Mysql Row的php变量?

类别(&#39;。$ categories;。&#39;): - 完整的html标记放在数据库中。 Mysql DB中的完整html代码。

2 个答案:

答案 0 :(得分:0)

我想知道你为什么要在你的数据库中存储这样的变量引用,但为了解决它你可以简单地做这样的事情:

/*
assuming $string contains EXACTLY this
<h4>Categories ( '. $categories; .' ) </h4>
*/
echo str_replace('\'. $categories; .\'',$categories, $string);

如果您通常需要对存储在数据库中的字符串进行单词替换,我建议您使用以下方法之一:

1)使用sprintf()并存储您的字符串:

$string = '<h4>Categories ( %s ) </h4>';
echo sprintf($string, $categories);

2)使用str_replace()并使用大括号围绕替换格式化字符串:

$string = '<h4>Categories ( {categories} ) </h4>';
echo str_replace('{categories}', $categories, $string);

最后一个的好处是你可以存储各种变量引用并相应地替换它们,而不必知道它们是否存在于字符串中:

$string = 'Hello, my name is {firstname} and I live in {city}, {state}';
$replace = ['{firstname}','{lastname}','{address}','{city}','{state}'];
$info = [
    'firstname' => 'john',
    'lastname'  => 'doe',
    'address'   => '123 main st',
    'city'      => 'somewhere',
    'state'     => 'IL'
];

echo str_replace($replace, $info, $string);

输出:您好,我的名字是约翰,我住在某处,IL

答案 1 :(得分:-1)

重写代码:

1) 停止 使用MySQL_功能,不推荐使用,不安全,不应使用 。有两种选择; mysqli_函数(面向对象或程序)或PDO功能(仅面向对象)

2)您的问题显得不清楚,<h4>代码中的<?php标记是否只是HTML?要输出PHP,您需要在print标记中包装echo / <?php文章,告诉服务器如何处理代码的这一部分。

同样,您需要确保该页面是作为PHP页面进行处理而不是仅仅作为HTML页面。页面名称也以.php结尾(例如page.php)?

3)为清楚起见:while ($row = mysql_fetch_row($result))一次只能输出一行,每个MySQL ,其中包含大量

4)正确缩进括号,为每个括号内容键入四个空格( not tab )非常有用,例如下面的一点点。

5)你的While循环混淆了;你也有任何括号。您的值$c_row将只是行中找到的最终值,但该行中只有一个unqiue值 - category列的值因为这是SQL查询中指定的内容。

<强>重写:

/***
 * Fill with your own values, Address is usually 'Localhost'
 ***/
 // connction details:
 $conn = mysqli_connect(Address, User, Password, Database);

 // A numeric column (id) does not need values to be quoted.
 $query = "SELECT category FROM html where id = 1 ";
 // note the mysqli_ and use of new $conn variable setout above
 $result = mysqli_query($conn, $query);

 /***
  * Typical output from the above for returning two rows from 
  * the DB would be: 
  * $result[0]['category'] = "whatever_value"
  * $result[0][0] = "whatever_value"
  * $result[1]['category'] = "whatever_value_row2"
  * $result[1][0] = "whatever_value_row2"
  ***/

 // This will fetch all the rows, one row at a time, 
 // with array keys being the SQL column names 
 // (ignores numeric array keys). 
 while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) 
       {
       // use definite named array key selectors to not need counters.
       $category = $row['category'];
       echo $category;     
       }

那会给你一个输出:

  

whatever_value
    whatever_value_row2

要使<h4>按预期工作,您可以尝试将echo替换为:

  print "<h4>Categories ( ". $category; ." ) </h4>";