我想知道是否有人可以帮助我。
我正在尝试整理一个管理表格,其中可以修改成员记录。
我放在一起的代码如下所示,我可以成功从mySQL数据库中检索记录,如果没有提供电子邮件地址的记录,则会收到相应的消息。
<?php
mysql_connect ("host","user","password") or die (mysql_error());
mysql_select_db ("database");
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (isset($_POST['search'])) {
$searchemailaddress = $_POST['searchemailaddress'];
$sql = mysql_query("select * from userdetails where emailaddress like '$searchemailaddress'");
if (mysql_num_rows($sql) == 0)
$msg = 'There are no member records set up with this email address, please try again!';
}
while ($row = mysql_fetch_array($sql)){
$emailaddress = $row['emailaddress'];
$forename = $row['forename'];
$surname = $row['surname'];
$subscriptionexpiration = $row['subscriptionexpiration'];
}
}
if (isset($_POST['update'])) {
$emailaddress = $_POST['emailaddress'];
$forename = $_POST['forename'];
$surname = $_POST['surname'];
$subscriptionexpiration = $_POST['subscriptionexpiration'];
$sql = mysql_query("UPDATE `userdetails` SET `emailaddress` = '$emailaddress', `forename` = '$forename',`surname` = '$surname',`subscriptionexpiration` = '$subscriptionexpiration' LIMIT 1");
$msg = 'This members records have been successfully updated!';
}
?>
<html>
<head>
<title>Search the Database</title>
<style type="text/css">
<!--
.style1 {font-family: Calibri
}
.style9 { font-family: Calibri;
font-size: 24px;
background-color: #78AFC5;
}
.style7 {
font-family: Calibri;
font-size: 16px;
background-color: #FFFFFF;
}
-->
</style>
</head>
<body>
</p>
<p class="style1"> </p>
<div align="center"><span class="style9">Search & Amend User Records </span></div>
<p class="style7"><span class="style10">
<?php
if (isset($msg)) // this is special section for
// outputing message
{
?>
</span>
<p class="style7">
<?=$msg?>
<p class="style7"><span class="style10">
<?php
}
?>
</span>
<form action="searchandamend.php" method="post">
<table width="393" border="1">
<tr>
<td width="161"><span class="style1">Search:</span></td>
<td width="207"><span class="style1">
<input name="searchemailaddress" type="text" id="searchemailaddress" size="25"/>
</span></td>
</tr>
<tr>
<td><span class="style1">Email Address:</span></td>
<td><span class="style1">
<input name="emailaddress" type="text"value="<?php echo $emailaddress;?>" size="25"/>
</span></td>
</tr>
<tr>
<td><span class="style1">First Name:</span></td>
<td><span class="style1">
<input name="forename" type="text" value="<?php echo $forename;?>" size="20"/>
</span></td>
</tr>
<tr>
<td><span class="style1">Surname:</span></td>
<td><input name="surname" type="text" value="<?php echo $surname;?>" size="20"/></td>
</tr>
<tr>
<td><span class="style1">Subscription Expiry Date:</span> </td>
<td><input name="subscriptionexpiration" type="text" id="subscriptionexpiration" value="<?php echo $subscriptionexpiration;?>" size="10"/></td>
</tr>
</table>
<p><br/>
<input type="submit" name="search" value="Search Records">
<input name="update" type="submit" value="Update Record">
</p>
</form>
</body>
</html>
但是,当我尝试更改记录的任何部分时,我遇到了问题。更改已保存,我收到正确的“记录更新”消息,但我也收到此错误:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /homepages/2/d333603417/htdocs/development/searchandamend.php on line 14
第14行是我的代码中的这一行:while ($row = mysql_fetch_array($sql)){
我已经在这方面工作了一段时间了,我似乎无法解决问题所在。
我只是想知道是否有人可以看看这个,让我知道我哪里出错了。
非常感谢
答案 0 :(得分:1)
if (mysql_num_rows($sql) == 0)
你没有打开支架!
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (isset($_POST['search'])) {
$searchemailaddress = $_POST['searchemailaddress'];
$sql = mysql_query("select * from userdetails where emailaddress like '$searchemailaddress'");
if (mysql_num_rows($sql) == 0)
$msg = 'There are no member records set up with this email address, please try again!';
}
while ($row = mysql_fetch_array($sql)){
$emailaddress = $row['emailaddress'];
$forename = $row['forename'];
$surname = $row['surname'];
$subscriptionexpiration = $row['subscriptionexpiration'];
}
}
}
这会使isset($_POST['search'])
if块在while
之前关闭。
你可能想要这样的东西:
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (isset($_POST['search'])) {
$searchemailaddress = $_POST['searchemailaddress'];
$sql = mysql_query("select * from userdetails where emailaddress like '$searchemailaddress'");
if (mysql_num_rows($sql) == 0) {
$msg = 'There are no member records set up with this email address, please try again!';
}
while ($row = mysql_fetch_array($sql)) {
$emailaddress = $row['emailaddress'];
$forename = $row['forename'];
$surname = $row['surname'];
$subscriptionexpiration = $row['subscriptionexpiration'];
}
}
}
答案 1 :(得分:0)
是否有可能未成功创建连接,并且您尝试从返回的布尔值中获取和数组?
答案 2 :(得分:0)
所有,真诚的感谢您抽出时间回复我的帖子。
在仔细研究了这一点后,考虑到你们所说的话,我想出了以下哪些工作正常。
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (isset($_POST["search"]))
{
$searchemailaddress = $_POST['searchemailaddress'];
$result = mysql_query("select * from userdetails where emailaddress like '$searchemailaddress'");
if (mysql_num_rows($result) == 0)
$msg = 'There are no member records with the email address you have provided, please try again!';
else
while ($row = mysql_fetch_array($result)){
$emailaddress = $row['emailaddress'];
$forename = $row['forename'];
$surname = $row['surname'];
$subscriptionexpiration = $row['subscriptionexpiration'];
$msg = 'Record retrieved!';
}
}
if (isset($_POST["update"]))
{
$emailaddress = $_POST['emailaddress'];
$forename = $_POST['forename'];
$surname = $_POST['surname'];
$result = mysql_query("UPDATE `userdetails` SET `emailaddress` = '$emailaddress', `forename` = '$forename',`surname` = '$surname', `subscriptionexpiration` = '$subscriptionexpiration' LIMIT 1");
$msg = 'This members record has been successfully updated!';
}
}
亲切的问候