Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL更新并不像我预期的那样有效_Php_Html_Mysql_Sql - Fatal编程技术网

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);