有PHP问题

时间:2018-12-10 22:19:21

标签: php mysql database mysqli xampp

我从本书中复制了一个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中给出空值

编辑:似乎是连接错误。当前正在尝试修复连接。自动取款机似乎没有任何作用

1 个答案:

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