Php MySQL更新并不像我预期的那样有效
我一直在为学校做一个项目,但有一段时间我被卡住了。因此,我们需要为模拟酒店的员工和客人制作一个管理系统,这非常有趣,但问题是: 当我尝试更新数据库中的值时,它不起作用,下面是代码的更新部分:Php MySQL更新并不像我预期的那样有效,php,html,mysql,sql,Php,Html,Mysql,Sql,我一直在为学校做一个项目,但有一段时间我被卡住了。因此,我们需要为模拟酒店的员工和客人制作一个管理系统,这非常有趣,但问题是: 当我尝试更新数据库中的值时,它不起作用,下面是代码的更新部分: if (!empty ($_GET['id'])) {$id = $_GET['id']; $query = "SELECT * FROM gast WHERE id=$id"; $result = mysql_query($query); if (!$result)
if (!empty ($_GET['id']))
{$id = $_GET['id'];
$query = "SELECT * FROM gast WHERE id=$id";
$result = mysql_query($query);
if (!$result)
{$message .= "Error msg<br>";}
$aantal = mysql_num_rows($result);
if ($aantal==1)
{$row = mysql_fetch_array($result);
$row['actief'];
$actief = $row['actief'];
if ($aantal==1)
{$query = "UPDATE gast SET actief= 1 WHERE id=$id";
mysql_query($query);
else if ($actief == 1){
$query = "UPDATE gast SET actief= 0 WHERE id=$id";
$result = mysql_query($query);
所以我想在这里创建一个切换,在我的数据库中提供一个名为actief的值。到目前为止,我所要做的就是在url中实际发送$id值,但其余的想法就是不起作用。现在,我犯一个愚蠢错误的机会是相当大的,因为我没有使用php那么长时间
不管怎样,您都可以在下面找到发送ID值以将操作与正确的来宾帐户关联的代码
while ($row = mysql_fetch_array($result)){
$actief = $row['actief'];
$id = $row['id'];
if ($actief==1){
echo
'<tr><td>' . $row['id'] .
'</td><td>' . $row['voornaam'] .
'</td><td>' . $row['tussenvoegsel'] .
'</td><td>' . $row['achternaam'] .
'</td><td>' . $row['tel'] .
'</td><td>' . $row['mobiel'] .
'</td><td>' . $row['nationaliteit'] .
'</td><td>' . $row['kamer'] .
'</td><td>' . $row['email'] .
'</td><td>' . "<a href='list_users.php?id=$id'><font color='lime'>" . "<i class='fa fa-thumbs-up'></i>" . "</font>" .
'</td></tr>';
}
else{
$actief = $row['actief'];
$id = $row['id'];
echo
'<tr><td>' . $row['id'] .
'</td><td>' . $row['voornaam'] .
'</td><td>' . $row['tussenvoegsel'] .
'</td><td>' . $row['achternaam'] .
'</td><td>' . $row['tel'] .
'</td><td>' . $row['mobiel'] .
'</td><td>' . $row['nationaliteit'] .
'</td><td>' . $row['kamer'] .
'</td><td>' . $row['email'] .
'</td><td>' . "<a href='list_users.php?id=$id'><font color='red'>" . "<i class='fa fa-thumbs-o-up'></i>" . "</font>" . '</a>' .
'</td></tr>';
}
}
$message .= '</table><br>';
}
?>
这是一张布局图,其实并不重要,但你永远不知道。
因此,每当我点击竖起大拇指图标时,页面将被重新加载,url将变为它应该是的样子,这里没有更多,也没有更少的事情发生。
如果有人有主意,请告诉我
您好,
Pimmy在为$id设置值后,对于if语句第一个块中的update语句,是否尝试过
UPDATE gast SET actief= 1 WHERE id=".$id;
或者
$query='UPDATE gast SET actief= 1 WHERE id='.$id;
或
可能传递到数据库的值只是字符串$id而不是值。所以我得到了答案,请不要嘲笑我,哈哈 问题很简单,只需更改两个变量,然后:
if ($aantal==1)
{
$row = mysql_fetch_array($result);
$row['actief'];
$actief = $row['actief'];
if ($aantal==0)
{
$query ='UPDATE gast SET actief= 1 WHERE id='.$id;
echo $query . '<br>';
$result = mysql_query($query);
及之后:
if ($aantal==1)
{
$row = mysql_fetch_array($result);
$row['actief'];
$actief = $row['actief'];
if ($actief==0) /* this is what went wrong*/
{
$query ='UPDATE gast SET actief= 1 WHERE id='.$id;
echo $query . '<br>';
$result = mysql_query($query);
好吧,对不起,大家浪费了你们的时间,我现在觉得自己很愚蠢,哈哈。
再次感谢所有的投入 你的错误是什么?你真的应该能够把它缩小到更具体的范围。您真的不需要发布这么多代码。您是否收到了特定的错误消息?是否为您的代码启用了错误报告:?您的代码易受SQL注入攻击。你们应该继续读下去。谢谢你们两位的反馈,我会把它缩短到具体的问题!关于错误,遗憾的是没有发现错误。@Gumbo,谢谢您的输入!如果在我需要做这件事之前我还有时间的话,我会在以后的某个时候深入研究它。但是在这个项目中,安全性可能听起来很愚蠢,因为它只针对一家模拟公司,所以并不是优先考虑的问题。但是增加一些安全性仍然是一个好主意!为什么只使用一个参数调用sprintf?感谢您的输入,我先尝试了您的第一个建议,这使激活帐户成为可能。不幸的是,它似乎并没有起到相反的作用。第二种方法也不起作用,第三种方法也一样。对不起,我是新来的。你能详细说明一下吗?我认为唯一被传递的参数是$id。实际上唯一被更新的参数是$actief,$id是唯一用于获取更新$actief参数的正确行的参数。Pimmy如果您还没有,您应该在查询之后添加一些echo语句,以确保将正确的语句传递到数据库。
if ($aantal==1)
{
$row = mysql_fetch_array($result);
$row['actief'];
$actief = $row['actief'];
if ($actief==0) /* this is what went wrong*/
{
$query ='UPDATE gast SET actief= 1 WHERE id='.$id;
echo $query . '<br>';
$result = mysql_query($query);