结果和查询未在HTML中显示来自MYSQL数据库

时间:2015-07-26 09:47:34

标签: php mysql database mysqli wampserver

我正在为一个非营利组织设计一个数据库,我是一名志愿者。 2012年,我在WampServer 2.2中使用MySQL,SQL和PHP研究了数据库的基础知识。我已经知道如何用HTML编程。

对于我在非营利组织进行的项目,我正在使用WampServer 2.5。当时我没有意识到我会很快遇到问题。

像往常一样创建网站和Apache中的各种表单很容易。使用SQL脚本创建数据库,我直接输入WampServer的用户界面,没有发生任何事故;但是,通过PHP将数据从HTML表单传输到数据库一直很困难。我得到的一个错误是PHP错误中不推荐使用的MySQL扩展。我发现,由于WampServer中的模块在最新版本中进行了升级,因此我在学习中学到的大部分内容都非常无用。

当我试图研究我的问题时,我遇到了这个教程: using-php-with-mysql-the-right-way

本教程附带的示例代码可以自由使用。我已经能够成功地使用大部分代码;但是,我在HTML中显示结果时遇到了困难。我已经阅读了教程,并且觉得我错过了一些我的想法与之无关的东西。我是初学者/业余爱好者。

我不会显示输入表单的HTML代码,因为它只是一个没有任何特殊内容的表单。它不包含PHP,它会发布到outputs.php

这是我的代码:

db_functions.php

    <?php
/**
* Database functions for a MySQL with PHP tutorial
* 
* @copyright Eran Galperin
* @license MIT License
* @see http://www.binpress.com/tutorial/using-php-with-mysql-the-right-way/17
*/

/**
* Connect to the database
* 
* @return bool false on failure / mysqli MySQLi object instance on success
*/
function db_connect() {

// Define connection as a static variable, to avoid connecting more than once 
static $connection;
// Try and connect to the database, if a connection has not been established yet
if(!isset($connection)) {
    // Load configuration as an array. Use the actual location of your configuration file
    // Put the configuration file outside of the document root
    $config = parse_ini_file('../../config.ini'); 
    $connection = mysqli_connect('localhost',$config['username'],$config['password'],$config['dbname']);
}
// If connection was not successful, handle the error
if($connection === false) {
    // Handle error - notify administrator, log to a file, show an error screen, etc.
    return mysqli_connect_error(); 
}
return $connection;
}
/**
* Query the database
*
* @param $query The query string
* @return mixed The result of the mysqli::query() function
*/
function db_query($query) {
// Connect to the database
$connection = db_connect();
// Query the database
$result = mysqli_query($connection,$query);
return $result;
}
/**
* Fetch rows from the database (SELECT query)
*
* @param $query The query string
* @return bool False on failure / array Database rows on success
*/
function db_select($query) {
$rows = array();
$result = db_query($query);
// If query failed, return `false`
if($result === false) {
    return false;
}
// If query was successful, retrieve all the rows into an array
while ($row = mysqli_fetch_assoc($result)) {
    $rows[] = $row;
}
return $rows;
}
/**
* Fetch the last error from the database
* 
* @return string Database error message
*/
function db_error() {
$connection = db_connect();
return mysqli_error($connection);
}
/**
* Quote and escape value for use in a database query
*
* @param string $value The value to be quoted and escaped
* @return string The quoted and escaped string
*/
function db_quote($value) {
$connection = db_connect();
return "'" . mysqli_real_escape_string($connection,$value) . "'";
}
?>

outputed.php

<HTML>
<HEAD><TITLE>104.9 LIMEFM MEMBERSHIP DATABASE</TITLE>
<STYLE>
TEXT-DECORATION=NONE
</STYLE>
</HEAD>

<STYLE>
A {TEXT-DECORATION: NONE}
</STYLE>

<BODY BGCOLOR="#D9FFD9" TEXT="Black" LINK="Black" ALINK="Black" VLINK="Black">

<CENTER>

<TABLE WIDTH="1020" BORDER="0">

<TR><TD COLSPAN="3">&nbsp;</TR>

<TR>
<TD WIDTH="340" ALIGN="left"><A HREF="help/help_index.html" TARGET="_blank"><IMG SRC="./images/help_button.png" WIDTH="62" HEIGHT="62" ALT="Help"></A>
<TD WIDTH="350" ALIGN="center"><IMG SRC="./images/limefm(green).jpg" WIDTH="143" HEIGHT="62" ALT="104.9 LimeFM">
<TD WIDTH="350" ALIGN="right"><B>Powered by: wAmp 2.5</B></P>Brought to you by:<BR><IMG SRC="./images/hills_designing_logo(green).jpg" ALT="Hill's Designing">
</TR>

</TABLE>

</P><HR WIDTH="1000"></P>

<TABLE WIDTH="1020" BORDER="0" CELLSPACING="10">

<TR><TD COLSPAN="4" ALIGN="center" BGCOLOR="#338928"><B><FONT COLOR="white" SIZE="5">outputted.php</FONT></B></TR>

<TR><TD COLSPAN="4" ALIGN="center">&nbsp;</TR>

<TR><TD COLSPAN="4" ALIGN="center"><HR WIDTH="1000"></B></TR>

<TR><TD COLSPAN="4" ALIGN="center">&nbsp;</TR>

</TABLE>

</CENTER>

<?php   

/**
* Inserting data from input_record.html into the following tables in database limefm_members:
* 
* members,
* ship_info,
* comments.
*/

// This is working, although I am not getting any notification that it is working.

//First I call for the functions
require("db_functions.php");

$member_Id=$_POST['member_Id'];
$Title=$_POST['Title'];
$LastName=$_POST['LastName'];
$FirstName=$_POST['FirstName'];
$Po_Box=$_POST['Po_Box'];
$Street=$_POST['Street'];
$City=$_POST['City'];
$State=$_POST['State'];
$Country=$_POST['Country'];
$Del=$_POST['Del'];
$WFTD=$_POST['WFTD'];
$phone=$_POST['phone'];
$mobile=$_POST['mobile'];
$email=$_POST['email'];
$DateJoined=$_POST['DateJoined'];
$Type=$_POST['Type'];
$RenewalDate=$_POST['RenewalDate'];
$LastContacted=$_POST['LastContacted'];
$MYOB_ID=$_POST['MYOB_ID'];
$Comment=$_POST['Comment'];

// I chose not to use syntax like: $email=db_quote($_POST['email']);

// Insert the values into the database

$result = db_query("INSERT INTO `members` (`member_id`,`title`,`lastname`,`firstname`,`po_box`,`street`,`city`,`state`,`country`,`del`,`phone`,`mobile`,`email`,`wftd`) VALUES ('','$Title','$LastName','$FirstName','$Po_Box','$Street','$City','$State','$Country','$Del','$phone','$mobile','$email','$WFTD')");

$result = db_query("INSERT INTO `ship_info` (`member_id`,`lastname`,`firstname`,`date_joined`,`type`,`renewal_date`,`last_contacted`,`myob_id`) VALUES ('','$LastName','$FirstName','$DateJoined','$Type','$RenewalDate','$LastContacted','$MYOB_ID')");

$result = db_query("INSERT INTO `comments` (`member_id`,`lastName`,`firstName`,`comment`) VALUES ('','$LastName','$FirstName','$Comment')");

echo"Attempting to display your last entered entry:</P>";


echo"Table 1: Members:</P>";

// result not displaying

$rows = db_select("SELECT * FROM members WHERE firstname='$FirstName' AND lastname='$LastName'");
if($rows === false) {
    $error = db_error();
    // Handle error - inform administrator, log to file, show error page, etc.
}

echo"Table 2: Ship_info:</P>";

// result not displaying
$rows = db_select("SELECT * FROM ship_info WHERE firstname='$FirstName' AND lastname='$LastName'");
if($rows === false) {
    $error = db_error();
    // Handle error - inform administrator, log to file, show error page, etc.
}

echo"Table 2: Comments:</P>";

// result not displaying
$rows = db_select("SELECT * FROM comments WHERE firstname='$FirstName' AND lastname='$LastName'");
if($rows === false) {
    $error = db_error();
    // Handle error - inform administrator, log to file, show error page, etc.
}

?>

<CENTER>

<TABLE WIDTH="1020" BORDER="0" CELLSPACING="10">

<TR><TD>&nbsp;</TR>

<TR><TD>&nbsp;</TR>

<TR><TD>&nbsp;</TR>

<TR><TD><HR WIDTH="1000"></TR>

<TR><TD>&nbsp;</TR>

<TR><TD ALIGN="center"><FONT SIZE="5" COLOR="red">The Success or Failure for Records being added are not being displayed.</FONT><BR>
                       <FONT SIZE="5" COLOR="black">The only current way for verifying data is through: </FONT><A HREF="../phpmyadmin/">
                       <FONT SIZE="5" COLOR="black"><B>phpMyAdmin.</B></FONT></A></TR>

<TR><TD>&nbsp;</TR>

<TR><TD><IMG SRC="./images/limefm_icon.jpg"><A HREF="input_record.html"><FONT SIZE="5">Input Next Record?</FONT></A></TR>

<TR><TD><IMG SRC="./images/limefm_icon.jpg"><A HREF="../phpmyadmin/"><FONT SIZE="5">Check Results?</FONT></A></TR>

<TR><TD><IMG SRC="./images/limefm_icon.jpg"><A HREF="index.html"><FONT SIZE="5">Return Home?</FONT></A></TR>

<TR><TD>&nbsp;</TR>

</TABLE>

</CENTER>
</BODY>
</HTML>

从上面的代码中可以看出,一旦将变量的值放入数据库(正在发生),我想在屏幕上显示最后输入的记录以验证条目的成功,以便PHP不需要管理员。我希望那些不具备计算机知识的人能够通过我正在创建的输入表单访问数据库。如果我无法显示outputs.php的结果,那么我将无法根据常用查询绘制搜索数据库所需的表单。

任何帮助将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:0)

您还没有编写代码来显示从db_select函数返回的结果。 db_select函数返回数组中的数据库结果集。您需要遍历数组并以HTML格式显示值。

<?php

echo "<P>Table 1: Members:</P>";
// result not displaying
$rows = db_select("SELECT * FROM members WHERE firstname='$FirstName' AND lastname='$LastName'");

if($rows === false) {
    $error = db_error();
    // Handle error - inform administrator, log to file, show error page, etc.
}
else
{
    foreach($rows as $v)
    {
          //Display html code
    }
}

?>

答案 1 :(得分:0)

首先,我要感谢Samir对我的问题的回答。我发现它对我的需求非常有帮助。

我希望分享我修改后的代码,现在它可以用于其他可能遇到这个问题并找到有益于他们需求的答案的人。

outputed.php

<HTML>
<HEAD>title</TITLE>
<STYLE>
TEXT-DECORATION=NONE
</STYLE>
</HEAD>

<STYLE>
A {TEXT-DECORATION: NONE}
</STYLE>

<BODY BGCOLOR="#D9FFD9" TEXT="Black" LINK="Black" ALINK="Black" VLINK="Black">

<CENTER>

<!---------------- HEADER ------------------->

<TABLE WIDTH="1020" BORDER="0">

<TR><TD COLSPAN="3">&nbsp;</TR>

<TR>
<TD WIDTH="340" ALIGN="left"><A HREF="url.html" TARGET="_blank"><IMG SRC="image.jpg" WIDTH="62" HEIGHT="62" ALT="Help"></A>
<TD WIDTH="350" ALIGN="center"><IMG SRC="image.jpg" WIDTH="143" HEIGHT="62" ALT="text">
<TD WIDTH="350" ALIGN="right"><B>Powered by: wAmp 2.5</B></P>Brought to you by:<BR><IMG SRC="image.jpg" ALT="text">
</TR>

</TABLE>

</P>

<HR WIDTH="1000">

</P>

<TABLE WIDTH="1020" BORDER="0" CELLSPACING="10">

<TR><TD COLSPAN="4" ALIGN="center" BGCOLOR="#338928"><B><FONT COLOR="white" SIZE="5">outputted.php</FONT></B></TR>

<TR><TD COLSPAN="4" ALIGN="center">&nbsp;</TR>

<!---------------- BODY ------------------->

<TR><TD COLSPAN="4"><FONT COLOR="black" SIZE="5">Please check that the results are correct before prodeeding:</FONT></P></TR>

<TR><TD COLSPAN="4" ALIGN="center">&nbsp;</TR>

<TR><TD COLSPAN="4" ALIGN="center"><HR WIDTH="1000"></B></TR>

<TR><TD COLSPAN="4" ALIGN="center">&nbsp;</TR>

</TABLE>

</CENTER>

<!---------------- PROCCESSING DATA FROM PREVIOUS PAGE WHICH WAS A FORM ------------------->

<?php   

//First I call for the functions
require("db_functions.php");

//variables - stored data from previous page.
$member_Id=$_POST['member_Id'];
$Title=$_POST['Title'];
$LastName=$_POST['LastName'];
$FirstName=$_POST['FirstName'];
$Po_Box=$_POST['Po_Box'];
$Street=$_POST['Street'];
$City=$_POST['City'];
$State=$_POST['State'];
$Country=$_POST['Country'];
$Del=$_POST['Del'];
$WFTD=$_POST['WFTD'];
$phone=$_POST['phone'];
$mobile=$_POST['mobile'];
$email=$_POST['email'];
$DateJoined=$_POST['DateJoined'];
$Type=$_POST['Type'];
$RenewalDate=$_POST['RenewalDate'];
$LastContacted=$_POST['LastContacted'];
$MYOB_ID=$_POST['MYOB_ID'];
$Comment=$_POST['Comment'];

//Insert the values into the database

$result = db_query("INSERT INTO `members` (`member_id`,`title`,`lastname`,`firstname`,`po_box`,`street`,`city`,`state`,`country`,`del`,`phone`,`mobile`,`email`,`wftd`) VALUES ('','$Title','$LastName','$FirstName','$Po_Box','$Street','$City','$State','$Country','$Del','$phone','$mobile','$email','$WFTD')");

$result = db_query("INSERT INTO `ship_info` (`member_id`,`lastname`,`firstname`,`date_joined`,`type`,`renewal_date`,`last_contacted`,`myob_id`) VALUES ('','$LastName','$FirstName','$DateJoined','$Type','$RenewalDate','$LastContacted','$MYOB_ID')");

$result = db_query("INSERT INTO `comments` (`member_id`,`lastName`,`firstName`,`comment`) VALUES ('','$LastName','$FirstName','$Comment')");

echo"Attempting to display your last entered entry:</P>";

//-----------------------------------------Displaying First Table----------------------------------------------

// select criteria
$rows = db_select("SELECT * FROM members WHERE firstname='$FirstName' AND lastname='$LastName'");

if($rows === false) {
$error = db_error();
}
else
{
foreach($rows as $v)
{

echo "<P><B>Table 1: Members:</B></P>";
echo "<TABLE BORDER=0 CELLSPACING=10 CELLPADDING=10>";

//Display first row - titles
echo "<TR>";
echo "<TD BGCOLOR=#FFFFFF><B>Member ID</B>";
echo "<TD BGCOLOR=#FFFFFF><B>Title</B>";
echo "<TD BGCOLOR=#FFFFFF><B>Last Name</B>";
echo "<TD BGCOLOR=#FFFFFF><B>First Name</B>";
echo "<TD BGCOLOR=#FFFFFF><B>P.O. Box</B>";
echo "<TD BGCOLOR=#FFFFFF><B>Street</B>";
echo "<TD BGCOLOR=#FFFFFF><B>City</B>";
echo "<TD BGCOLOR=#FFFFFF><B>State</B>";
echo "<TD BGCOLOR=#FFFFFF><B>Country</B>";
echo "<TD BGCOLOR=#FFFFFF><B>Delivery Method</B>";
echo "<TD BGCOLOR=#FFFFFF><B>Phone</B>";
echo "<TD BGCOLOR=#FFFFFF><B>Mobile</B>";
echo "<TD BGCOLOR=#FFFFFF><B>eMail</B>";
echo "<TD BGCOLOR=#FFFFFF><B>Word For The Day</B>";
echo "</TR>";

//Display second row - record
echo "<TR>";
echo "<TD BGCOLOR=#FFFFFF>" . $v['Member_Id'] . " ";
echo "<TD BGCOLOR=#FFFFFF>" . $v['Title'] . " ";
echo "<TD BGCOLOR=#FFFFFF>" . $v['LastName'] . " ";
echo "<TD BGCOLOR=#FFFFFF>" . $v['FirstName'] . " ";
echo "<TD BGCOLOR=#FFFFFF>" . $v['Po_Box'] . " ";
echo "<TD BGCOLOR=#FFFFFF>" . $v['Street'] . " ";
echo "<TD BGCOLOR=#FFFFFF>" . $v['City'] . " ";
echo "<TD BGCOLOR=#FFFFFF>" . $v['State'] . " ";
echo "<TD BGCOLOR=#FFFFFF>" . $v['Country'] . " ";
echo "<TD BGCOLOR=#FFFFFF>" . $v['Del'] . " ";
echo "<TD BGCOLOR=#FFFFFF>" . $v['Phone'] . " ";
echo "<TD BGCOLOR=#FFFFFF>" . $v['Mobile'] . " ";
echo "<TD BGCOLOR=#FFFFFF>" . $v['eMail'] . " ";
echo "<TD BGCOLOR=#FFFFFF>" . $v['WFTD'] . " ";
echo "</TR>";

echo "</TABLE>";
}
}

//-----------------------------------------Displaying Second Table----------------------------------------------

// select criteria
$rows = db_select("SELECT * FROM ship_info WHERE firstname='$FirstName' AND lastname='$LastName'");

if($rows === false) {
$error = db_error();
}
else
{
foreach($rows as $v)
{

echo "<P><B>Table 2: Ship_Info:</B></P>";
echo "<TABLE BORDER=0 CELLSPACING=10 CELLPADDING=10>";

//Display first row - titles
echo "<TR>";
echo "<TD BGCOLOR=#FFFFFF><B>Member ID</B>";
echo "<TD BGCOLOR=#FFFFFF><B>Last Name</B>";
echo "<TD BGCOLOR=#FFFFFF><B>First Name</B>";
echo "<TD BGCOLOR=#FFFFFF><B>Date Joined</B>";
echo "<TD BGCOLOR=#FFFFFF><B>Type</B>";
echo "<TD BGCOLOR=#FFFFFF><B>Renewal Date</B>";
echo "<TD BGCOLOR=#FFFFFF><B>Last Contacted</B>";
echo "<TD BGCOLOR=#FFFFFF><B>MYOB ID</B>";
echo "</TR>";

//Display second row - record
echo "<TR>";
echo "<TD BGCOLOR=#FFFFFF>" . $v['Member_Id'] . " ";
echo "<TD BGCOLOR=#FFFFFF>" . $v['LastName'] . " ";
echo "<TD BGCOLOR=#FFFFFF>" . $v['FirstName'] . " ";
echo "<TD BGCOLOR=#FFFFFF>" . $v['Date_Joined'] . " ";
echo "<TD BGCOLOR=#FFFFFF>" . $v['Type'] . " ";
echo "<TD BGCOLOR=#FFFFFF>" . $v['Renewal_Date'] . " ";
echo "<TD BGCOLOR=#FFFFFF>" . $v['Last_Contacted'] . " ";
echo "<TD BGCOLOR=#FFFFFF>" . $v['MYOB_ID'] . " ";
echo "</TR>";

echo "</TABLE>";
}
}

//-----------------------------------------Displaying Third Table----------------------------------------------

// select criteria
$rows = db_select("SELECT * FROM comments WHERE firstname='$FirstName' AND lastname='$LastName'");

if($rows === false) {
$error = db_error();
}
else
{
foreach($rows as $v)
{

echo "<P><B>Table 3: Comments:</B></P>";
echo "<TABLE BORDER=0 CELLSPACING=10 CELLPADDING=10>";

//Display first row - titles
echo "<TR>";
echo "<TD BGCOLOR=#FFFFFF><B>Member ID</B>";
echo "<TD BGCOLOR=#FFFFFF><B>LastName</B>";
echo "<TD BGCOLOR=#FFFFFF><B>FirstName</B>";
echo "<TD BGCOLOR=#FFFFFF><B>Comment</B>";
echo "</TR>";

//Display second row - record
echo "<TR>";
echo "<TD BGCOLOR=#FFFFFF>" . $v['Member_Id'] . " ";
echo "<TD BGCOLOR=#FFFFFF>" . $v['LastName'] . " ";
echo "<TD BGCOLOR=#FFFFFF>" . $v['FirstName'] . " ";
echo "<TD BGCOLOR=#FFFFFF>" . $v['Comment'] . " ";
echo "</TR>";

echo "</TABLE>";
}
}

?>

<!---------------- FOOTER - LINKS ------------------->

<CENTER>

<TABLE WIDTH="1020" BORDER="0" CELLSPACING="10">

<TR><TD>&nbsp;</TR>

<TR><TD>&nbsp;</TR>

<TR><TD>&nbsp;</TR>

<TR><TD><HR WIDTH="1000"></TR>

<TR><TD>&nbsp;</TR>

<TR><TD>&nbsp;</TR>

<TR><TD><IMG SRC="image.jpg"><A HREF="url.html"><FONT SIZE="5">Input Next Record?</FONT></A></TR>

<TR><TD><IMG SRC="image.jpg"><A HREF="url.html"><FONT SIZE="5">Return Home?</FONT></A></TR>

<TR><TD><IMG SRC="image.jpg"><A HREF="url.html""><FONT SIZE="5">Contact Admin?</FONT></A></TR>

<TR><TD>&nbsp;</TR>

</TABLE>

</CENTER>
</BODY>
</HTML>

我没有显示上一页的代码,这只是一个html表单。由于它包含冗长的下拉可选项,我决定不在此处包含它。我希望你们中的一些人会觉得这很有帮助。