Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.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 SQL更新查询不合作_Php_Html_Mysql_Css_Mysqli - Fatal编程技术网

Php SQL更新查询不合作

Php SQL更新查询不合作,php,html,mysql,css,mysqli,Php,Html,Mysql,Css,Mysqli,我正在管理面板的编辑表单底部添加一个保存/更新按钮。出于某种原因,每当我对表单进行更改并单击“保存”时,它只会重新加载页面,而不做任何更改。我还注意到,只有当我尝试从pages.php文件运行代码时(从索引运行,然后单击pages即可),它才会显示: 未定义变量:dbc in C:\Users\Jake\Desktop\Xampp\htdocs\jakefordsite\admin\content\pages.php 在线12 警告:mysqli_query()要求参数1为mysqli,给定为n

我正在管理面板的编辑表单底部添加一个保存/更新按钮。出于某种原因,每当我对表单进行更改并单击“保存”时,它只会重新加载页面,而不做任何更改。我还注意到,只有当我尝试从pages.php文件运行代码时(从索引运行,然后单击pages即可),它才会显示:

未定义变量:dbc in C:\Users\Jake\Desktop\Xampp\htdocs\jakefordsite\admin\content\pages.php 在线12

警告:mysqli_query()要求参数1为mysqli,给定为null 在里面 C:\Users\Jake\Desktop\Xampp\htdocs\jakefordsite\admin\content\pages.php 在线12

我可以通过在pages.php中声明一个新的$dbc(databaseconnection)变量来消除这个错误,但在更新表单数据时仍然存在同样的问题

PAGES.PHP:

<?php ## Page Manager ?>

<h2>Page Manager</h2>

<div class="col sidebar">

    <ul>

        <?php

           $q = "SELECT * FROM pages ORDER BY name ASC"; 
           $r = mysqli_query($dbc, $q);

           if ($r)
           {
                while ($link = mysqli_fetch_assoc($r))
                {
                    echo '<li><a href="?page=pages&id='.$link['id'].'">'.$link['name'].'</a></li>';
                }
           }

        ?>

    </ul>
</div>

<div class="col editor">

    <?php

     if (isset($_POST['submitted']) == 1) { 

            $q = "UPDATE pages SET title='$_POST[title]', name='$_POST[name]', body='$_POST[body]', WHERE id = '$_POST[id]'"; 
            $r = mysqli_query($dbc, $q);

     }

     if (isset($_GET['id'])) { 

            $q = "SELECT * FROM pages WHERE id = '$_GET[id]' LIMIT 1";
;  
            $r = mysqli_query($dbc, $q);
            $opened = mysqli_fetch_assoc($r);


    ?>

        <form action="?page=pages&id=<?php echo $opened['id'] ?>" method="post">

            <p><label>Page title: </label><input type="text" size="30" name="title" value="<?php echo $opened['title']?>"></p>
            <p><label>Page name:</label> <input type="text" size="30" name="name" value="<?php echo $opened['name']?>"></p> 

            <label>Page body: </label><br>
            <textarea name="body" cols="30" rows="8"><?php echo $opened['body'] ?></textarea>

               <input type="hidden" name="submitted" value="1"/>
               <input type="hidden" name="id" value="<?php echo $opened['id'] ?>"/>

             <p><input type="submit" name="submit" value="Save Changes"/></p>

        </form>

    <?php } ?>

</div>

页面管理器

Pages.php上,您有

$r = mysqli_query($dbc, $q);
$q
可以,但您没有提到
$dbc

设置页面上
,创建一个连接类,声明一个
连接方法
,然后在页面上。PHP

$db_obj =  new setup();  /* create object for setup class */
$dbc = $db_obj -> connect_db();/* call connection method */

可能您不应该为$DBCY加载数据库连接,因为您使用的是支持参数化查询的mysqli。为什么要做允许SQL注入的字符串插值?别忘了在
pages.php中包含
setup page
$r = mysqli_query($dbc, $q);
$db_obj =  new setup();  /* create object for setup class */
$dbc = $db_obj -> connect_db();/* call connection method */