我从本书中复制了一个PHP的问题以进行分配。
<?php // Script 13.7 - add_quote.php
/* This script adds a quote. */
// Define a page title and include the header:
define('TITLE', 'Add a Quote');
include('templates/header.html');
print '<h2>Add a Quotation</h2>';
// Restrict access to administrators only:
if (!is_administrator()) {
print '<h2>Access Denied!</h2><p class="error">You do not have permission to access this page.</p>';
include('templates/footer.html');
exit();
}
// Check for a form submission:
if ($_SERVER['REQUEST_METHOD'] =='POST') { // Handle the form.
if ( !empty($_POST['quote']) && !empty($_POST['source']) ) {
// Need the database connection:
include('../mysqli_connect.php');
// Prepare the values for storing:
$quote = mysqli_real_escape_string($dbc,trim(strip_tags($_POST['quote'])));
$source = mysqli_real_escape_string($dbc,trim(strip_tags($_POST['source'])));
// Create the "favorite" value:
if (isset($_POST['favorite'])) {
$favorite = 1;
} else {
$favorite = 0;
}
$query = "INSERT INTO quotes (quote, source, favorite) VALUES ('$quote', '$source', $favorite)";
mysqli_query($dbc, $query);
if (mysqli_affected_rows($dbc) == 1){
// Print a message:
print '<p>Your quotation has been stored.</p>';
} else {
print '<p class="error">Could not store the quote because:<br>' . mysqli_error($dbc) . '.</p><p>The query being run was: ' . $query . '</p>';
}
// Close the connection:
mysqli_close($dbc);
} else { // Failed to enter a quotation.
print '<p class="error">Please enter a quotation and a source!</p>';
}
} // End of submitted IF.
// Leave PHP and display the form:
?>
<form action="add_quote.php" method="post">
<p><label>Quote <textarea name="quote" rows="5" cols="30"></textarea></label></p>
<p><label>Source <input type="text" name="source"></label></p>
<p><label>Is this a favorite? <input type="checkbox" name="favorite" value="yes"></label></p>
<p><input type="submit" name="submit" value="Add This Quote!"></p>
</form>
<?php include('templates/footer.html'); ?
这给了我错误
注意:未定义的变量:第26行的C:\ xampp \ htdocs \ CH13 \ add_quote.php中的dbc
警告:mysqli_real_escape_string()期望参数1为mysqli,在第26行的C:\ xampp \ htdocs \ CH13 \ add_quote.php中给出空值
注意:未定义的变量:第27行的C:\ xampp \ htdocs \ CH13 \ add_quote.php中的dbc
警告:mysqli_real_escape_string()期望参数1为mysqli,在第27行的C:\ xampp \ htdocs \ CH13 \ add_quote.php中给出空值
注意:未定义的变量:第37行的C:\ xampp \ htdocs \ CH13 \ add_quote.php中的dbc
警告:mysqli_query()期望参数1为mysqli,在第37行的C:\ xampp \ htdocs \ CH13 \ add_quote.php中给出空值
注意:未定义的变量:第39行的C:\ xampp \ htdocs \ CH13 \ add_quote.php中的dbc
警告:mysqli_affected_rows()期望参数1为mysqli,在第39行的C:\ xampp \ htdocs \ CH13 \ add_quote.php中给出空值
注意:未定义的变量:第43行C:\ xampp \ htdocs \ CH13 \ add_quote.php中的dbc
警告:mysqli_error()期望参数1为mysqli,在第43行的C:\ xampp \ htdocs \ CH13 \ add_quote.php中给出null 无法存储报价,因为:
正在运行的查询是:INSERT INTO quotes (quote, source, favorite) VALUES ('', '', 0)
注意:未定义的变量:第47行的C:\ xampp \ htdocs \ CH13 \ add_quote.php中的dbc
警告:mysqli_close()期望参数1为mysqli,在第47行的C:\ xampp \ htdocs \ CH13 \ add_quote.php中给出空值
编辑:似乎是连接错误。当前正在尝试修复连接。自动取款机似乎没有任何作用
答案 0 :(得分:0)
$dbc
似乎是由include('../mysqli_connect.php');
在第23行创建的。
由于运行时警告将第26行上$dbc
的首次使用报告为null
,因此include
脚本实际上无法连接到数据库,或者保存数据库连接资源的变量未命名为$dbc
。
也许将其添加到mysqli_connect.php
的末尾以帮助确定连接尝试出了什么问题:
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}