根据用户输入和现有的dbms数据更新dbms
我有一个php页面,它从包含电子邮件addy的dbms中提取数据。这工作。然后它显示电子邮件地址和其他存储的数据数据。然后用户可以选择将“X”放入称为emailselected的php页面中设计的字段中。这也适用。我现在想用基于存储的电子邮件地址的新字段更新dbms,但更新语句不起作用。请帮忙。这部分的php文件在这里。根据用户输入和现有的dbms数据更新dbms
include("db.php");
if (isset($_POST['ssubmit']))
{
$id_save = $test['id'];
$emailselected_save = $_POST['emailselected'];
$email_save = $test['email'];
mysql_query("UPDATE emails SET selected='$emailselected_save' WHERE id = 'id'");
echo "<input type='button' value='Email(s) sent' onclick='goBack()' />";
mysql_close($conn);
} else {echo "hello";}
?>
</head>
<form method='post'>
<div id='headd'>
<br />
<input type='button' value='Close this window without Sending' onclick='goBack()' />
<input type='submit' name='ssubmit' id='ssubmit' value='Send Email Now!!!' />
<p>Place an "X" in the emails you wish to send!!!</p>
</div>
<body>
<br /><br/>
<?php
include("db.php");
$result = mysql_query("SELECT * FROM emails WHERE unsubscribe != 'x' ORDER BY lastname ASC");
while($test = mysql_fetch_array($result))
{
?>
<table border='1' width='78%'>
<tr align=\"left\">
<td width='4%'><font color='black'><input type='text' size='1' id='emailselected' name='emailselected' /></font></td>
<td width='15%'><font color='black'><?php echo $test['lastname']?></font></td>
<td width='15%'><font color='black'><?php echo $test['firstname']?></font></td>
<td width='40%'><font color='black'><?php echo $test['email']?></font></td>
<td width='4%'><font color='black'><?php echo $test['id']?></font></td>
</tr>
</table>
<?php
}
?>
</form>
表单顶部是一个包含语句。这是可行的,因为它会提取电子邮件附件并将其显示在php文件中。
我在做什么错?
你几乎限于以下可能性,如果数据没有更新:
- 语句失败;或
- 该语句不影响行;或
- 该声明影响了错误的行。
要找出哪些,你应该从mysql_query
检查返回代码,看看它是否失败与否:
$rc = mysql_query('my hovercraft is full of eels');
if (!$result) {
die('What?: ' . mysql_error());
}
如果没有失败,你应该再检查它是如何影响的行数与mysql_affected_rows()
:
$num = mysql_affected_rows();
printf("Updated %d rows\n", $num);
从返回它们的功能检查返回值是良好的编程习惯。
输出或记录您在SQL语句中使用的所有变量也可能是一个好主意,以确保它们是您认为的那些变量。
而且,尽管现在不用说了,但使用mysql_*
函数的功能是discouraged,您应该使用mysqli_*
(or PDO
)来代替。
而我只是刚刚注意到,您的HTML元素的层次结构似乎不太正确。你有效地:
<head>
:
</head>
<form>
:
<body>
:
这不会凝胶对我。我不确定form
有效外部的身体。根据w3c specs,html元素必须包含:
后跟正文元素的头元素。
非常感谢您的回复。关于这个问题,我不是很擅长查询数据库。如何验证mysql_query的返回码是否失败?你能否更具体地说明如何做到这一点。今天早上我有点慢。 LOL –
没有probs,@Dave,看看更新。我目前的位置没有PHP环境,但应该足够接近你所需要的。 – paxdiablo
好的,我插入了你的代码,没有任何东西。我在想其他的东西。我什至没有得到“什么?:”或printr结果。如果您在启动更新过程的提交按钮中查看我的原始代码,那么可能存在问题。我认为它由于某种原因甚至没有进入isset ssubmit命令。我以前尝试插入警报声明,无论结果如何,它也不显示。我正在使用“ssubmit”,所以它与我将在稍后添加到表单中的另一个提交声明发生冲突。我迷路了LOL –
“阿迪”不是英文单词。你是一个六岁的孩子吗? :-) – paxdiablo
你为什么这么说?你能否帮我解决我的问题? –
为什么,戴夫,我当然可以:-)看到我的答案。就意思而言,这不是我的意图,幽默是澳大利亚的事情,虽然它主要是针对我们自己,但它有时也会逃到世界其他地方。 – paxdiablo