这是我的整个代码:
<?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代码。
答案 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>";