使用 PHP 将 MySQL 嵌入到 HTML 超链接中
Embedding MySQL into HTML hyperlink using PHP
我对 Web 开发和从头开始自学还很陌生。
我正在 运行 通过一些练习来自学并熟悉 PHP 和 MySQL 作为语言,并以一个简单的糖果店为例。我想制作一个页面,其中仅列出我的糖果名称和指向新页面的超链接,该页面会告诉您更多信息。我从头开始编写了以下代码,在我的脑海中它是有道理的,但其中一定隐藏了一个错误。如果有人能发现我的错误,我将不胜感激 and/or 提供任何关于将来要注意什么的提示。谢谢!
<?php //sweetshop.php
require_once 'login.php';
$conn = new mysqli($hn, $un, $pw, $db);
if ($conn->connect_error) die("Error Sweetshop.");
$query = "SELECT * FROM products";
$result = $conn->query($query);
if (!$result) die("Fatal Error");
$rows = $result->num_rows;
for ($j = 0; $j < $rows; ++$j)
{
$row = $result->fetch_array(MYSQLI_ASSOC);
?><a href="product?product_id=<?php echo htmlspecialchars($row['product_id'])?>"><?php echo htmlspecialchars($row['sweet'])?></a><br/><?
}
$result->close();
$conn->close();
?>
我只是在您的代码段中添加了易于使用的提取和打印选项,并且它可以正常工作。此外,使用 die
或 try/catch
来处理您的 MySQLi
和 PHP
错误很难理解那里到底发生了什么。因此,在开发项目时,配置 PHP
和 MySQLi
报告错误是必不可少的。
您可以在 PHP
和 MySQLi
中使用以下行打开错误报告,位于 PHP
文件的顶部。
ini_set('display_errors', 1);
error_reporting(E_ALL);
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
这些行打印所有错误,例如; Uncaught mysqli_sql_exception: Table 'tevrakdb.prod5uct' doesn't exist in /var/..
或 Fatal error: Uncaught mysqli_sql_exception: Access denied for user 'randomuser'@...
。为了更好地理解 PHP
和 MYSQL
错误,您可以查看 here.
这是您的增强代码段。
<?php
require_once 'login.php';
ini_set('display_errors', 1); //display errors on the screen
error_reporting(E_ALL); // All errors and warning
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); //Report errors and warnings from mysqli function calls
$conn = new mysqli($hn, $un, $pw, $db);
$query = "SELECT * FROM products";
$result = $conn->query($query);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) { ?>
<a href="product?product_id=<?php echo htmlspecialchars($row['product_id']); ?>">
<?php echo htmlspecialchars($row['product_name_lang_1']); ?>
</a><br/>
<?php
}
}
$result->close();
$conn->close();
?>
顺便说一下,我建议不要忘记内联 php 代码行的分号结尾。
我对 Web 开发和从头开始自学还很陌生。 我正在 运行 通过一些练习来自学并熟悉 PHP 和 MySQL 作为语言,并以一个简单的糖果店为例。我想制作一个页面,其中仅列出我的糖果名称和指向新页面的超链接,该页面会告诉您更多信息。我从头开始编写了以下代码,在我的脑海中它是有道理的,但其中一定隐藏了一个错误。如果有人能发现我的错误,我将不胜感激 and/or 提供任何关于将来要注意什么的提示。谢谢!
<?php //sweetshop.php
require_once 'login.php';
$conn = new mysqli($hn, $un, $pw, $db);
if ($conn->connect_error) die("Error Sweetshop.");
$query = "SELECT * FROM products";
$result = $conn->query($query);
if (!$result) die("Fatal Error");
$rows = $result->num_rows;
for ($j = 0; $j < $rows; ++$j)
{
$row = $result->fetch_array(MYSQLI_ASSOC);
?><a href="product?product_id=<?php echo htmlspecialchars($row['product_id'])?>"><?php echo htmlspecialchars($row['sweet'])?></a><br/><?
}
$result->close();
$conn->close();
?>
我只是在您的代码段中添加了易于使用的提取和打印选项,并且它可以正常工作。此外,使用 die
或 try/catch
来处理您的 MySQLi
和 PHP
错误很难理解那里到底发生了什么。因此,在开发项目时,配置 PHP
和 MySQLi
报告错误是必不可少的。
您可以在 PHP
和 MySQLi
中使用以下行打开错误报告,位于 PHP
文件的顶部。
ini_set('display_errors', 1);
error_reporting(E_ALL);
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
这些行打印所有错误,例如; Uncaught mysqli_sql_exception: Table 'tevrakdb.prod5uct' doesn't exist in /var/..
或 Fatal error: Uncaught mysqli_sql_exception: Access denied for user 'randomuser'@...
。为了更好地理解 PHP
和 MYSQL
错误,您可以查看 here.
这是您的增强代码段。
<?php
require_once 'login.php';
ini_set('display_errors', 1); //display errors on the screen
error_reporting(E_ALL); // All errors and warning
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); //Report errors and warnings from mysqli function calls
$conn = new mysqli($hn, $un, $pw, $db);
$query = "SELECT * FROM products";
$result = $conn->query($query);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) { ?>
<a href="product?product_id=<?php echo htmlspecialchars($row['product_id']); ?>">
<?php echo htmlspecialchars($row['product_name_lang_1']); ?>
</a><br/>
<?php
}
}
$result->close();
$conn->close();
?>
顺便说一下,我建议不要忘记内联 php 代码行的分号结尾。