Php If语句不';即使条件为真,也不能执行

Php If语句不';即使条件为真,也不能执行,php,Php,我在这里完全不知所措。我编写了一个相对简单的PHP脚本,它根据HTML表单中的用户输入更新数据库记录。该脚本包含一个基于隐藏输入执行的“if”语句。我知道语句执行是因为SQL查询执行时没有问题。我遇到的问题是,如果设置了查询对象,那么应该在另一个if语句中执行,但显然不是这样,因为其中的$message变量没有赋值。我知道已设置查询对象,因为当我回显它时,它显示为“1”。下面是有问题的代码块: <?php if(isset($_POST['submitted']) == 1) { $n

我在这里完全不知所措。我编写了一个相对简单的PHP脚本,它根据HTML表单中的用户输入更新数据库记录。该脚本包含一个基于隐藏输入执行的“if”语句。我知道语句执行是因为SQL查询执行时没有问题。我遇到的问题是,如果设置了查询对象,那么应该在另一个if语句中执行,但显然不是这样,因为其中的$message变量没有赋值。我知道已设置查询对象,因为当我回显它时,它显示为“1”。下面是有问题的代码块:

<?php  
if(isset($_POST['submitted']) == 1) {
$name = mysqli_real_escape_string($dbc, $_POST['name']);
    $q = "UPDATE ".$_POST['table']." SET name = '".$name."' WHERE id = ".$_POST['id'];
    $r = mysqli_query($dbc, $q);
    echo $r;
    print_r($_POST);
    echo mysqli_error($dbc);
    if ($r) {
        $message = '<p>Operation executed successfuly</p>';
    } else {
        $message = '<p>Operation did not execute because: '.mysqli_error($dbc);
        $message .= '<p>'.$q.'</p>';
    } 
}
?>

EDIT2:好的,我提出了一个解决问题的“修复”,也就是说,我在$message的回显之前将if条件向上移动,并将条件更改为
isset($\u POST['submitted']
。我想这是必须的。我想在处理提交的数据和解析PHP文件时,我应该阅读更多关于操作顺序的信息,因为我很困惑为什么这个“修复”会起作用……

这个(有条件的)陈述是一个误判:

if(isset($_POST['submitted']) == 1)
您需要做的是将它们分成两个单独的语句:

if(isset($_POST['submitted']) && $_POST['submitted']== 1)
或者只需删除
==1

您的代码也会面临严重的SQL注入。从用户输入更新表和设置列根本不安全

充其量只能使用事先准备好的陈述

但是,请注意,如果要将表和/或列转换为准备好的语句方法,则不能绑定该表和/或列

因此,以下操作将失败(以PDO准备的语句为例):

请阅读以下有关此方法的内容,其中无法使用此方法:


如果(isset($\u POST['submitted'])==1)
首先,这不是使用该方法的方法。顺便说一句,
$q=“UPDATE”。$\u POST['table']。"
你确定你真的想这样做吗?你在这里自找麻烦。说。了解。我建议使用
PDO
,我希望它比使用非参数化查询更容易、更干净、更安全。另外,可以帮助你在
MySQLi
PDO
之间进行选择。好的,我删除了==1。它执行,no有问题。我将研究带有参数化查询的预处理语句。我们需要查看更多代码。您的问题开始不清楚POST数组的值及其来源。在我看来,您可能得到了
$\u POST['id']
来自上一个查询/在填充表单/隐藏元素中,可能需要获取id。好的,谢谢,我会研究它,但这对解决主要问题没有帮助…@iprit1915错误报告显示了什么?可能有一些错误你看不到。我们不知道POST数组中的值。你没有连接吗使用mysqli api?@iprit1915执行ect。此外,在使用UPDATE进行查询时,请使用
mysqli\u受影响的行()
,否则,您可能会得到另一个误报。好的,我设置了错误报告(E\u ALL)但这并没有对输出产生影响。我正在用隐藏的输入将GET变量传递给POST,但这不可能是原因,当然……我的意思是在按下submit按钮后GET变量消失了,但我在查询中传递POST变量。我不确定你说的连接api是什么意思,你是说有db吗连接?它存储在$dbc变量中。
if(isset($_POST['submitted']) == 1)
if(isset($_POST['submitted']) && $_POST['submitted']== 1)
$q = "UPDATE :table SET :name = :name WHERE id = :id;
$q = "UPDATE ? SET name = :name WHERE id = :id;