Php是';t更新我的数据库

Php是';t更新我的数据库,php,html,mysql,phpmyadmin,Php,Html,Mysql,Phpmyadmin,我正在建立一个包含要发布和更新的报告的网站, 我有以下代码,在网上冲浪和检查解决方案后,这些代码根本没有帮助 选择参考号后,此页面从数据库中获取内容,并在文本区域中回显以供用户更新。 以下是一个示例: 第二页: <form method="post" action="./../php/updated_preview_report.php"> ending: <textarea id="endings" name="endings" placeholder="ending"

我正在建立一个包含要发布和更新的报告的网站, 我有以下代码,在网上冲浪和检查解决方案后,这些代码根本没有帮助

选择参考号后,此页面从数据库中获取内容,并在文本区域中回显以供用户更新。 以下是一个示例:

第二页:

<form method="post"  action="./../php/updated_preview_report.php">
ending:
<textarea id="endings" name="endings"  placeholder="ending" > <?php echo $endings; ?></textarea> 
<input type="submit" name="preview" value="ending" />
</form>
当我回显任何更新的值时,例如
$title
,它会显示更新的值

请注意,未报告/显示任何错误。

那么为什么这个查询不更新我的数据库呢


我在网络开发方面的知识很差,所以对我来说很简单,提前谢谢你

您需要对正在使用的变量进行转义,并使用concat
运算符将查询串在一起

e、 差不多

$str = "SELECT " . $var1 . " FROM " . $var2;
那么这个

$sql = "UPDATE report SET title = '$titl', type = '$kind', subject = '$subjec', cause = '$caus', solution = '$solutio', penalty = '$penalt' , note = '$not', ending = '$endin'  WHERE reference = $ref";
变成这样

$sql = "UPDATE report SET title = '" . $titl . "', type = '" . $kind . "', subject = '" . $subjec. "', cause = '" . $caus . "', solution = '" . $solutio . "', penalty = '" . $penalt . "' , note = '" . $not . "', ending = '" . $endin . "'  WHERE reference = '" . $ref . "'";

您没有收到错误,因为
更新报告集title='$titl',type='$kind',subject='$subsec',cause='$caus',solution='$solution',pauld='$penalt',note='$not',end='$endin',其中reference=$ref
是有效语法。

您需要转义正在使用的变量,并使用concat
操作符将查询串在一起

e、 差不多

$str = "SELECT " . $var1 . " FROM " . $var2;
那么这个

$sql = "UPDATE report SET title = '$titl', type = '$kind', subject = '$subjec', cause = '$caus', solution = '$solutio', penalty = '$penalt' , note = '$not', ending = '$endin'  WHERE reference = $ref";
变成这样

$sql = "UPDATE report SET title = '" . $titl . "', type = '" . $kind . "', subject = '" . $subjec. "', cause = '" . $caus . "', solution = '" . $solutio . "', penalty = '" . $penalt . "' , note = '" . $not . "', ending = '" . $endin . "'  WHERE reference = '" . $ref . "'";

您没有收到错误,因为
更新报告集title='$titl',type='$kind',subject='$subsec',cause='$caus',solution='$solutio',pauld='$penalt',note='$not',end='$endin',其中reference=$ref
是有效语法。

应该有错误,因为您同时使用了“
mysql
”和“
”“
mysqli
”连接类型。由于未提供连接文件,因此无法说明在连接文件中实现了哪种方法。请仅使用一种类型。如果问题未得到解决,请尝试添加

error_reporting(E_ALL);
ini_set('display_errors', '1'); 
到页面顶部。(上面
包括“connectionfile.php”;


这将显示代码中发生的任何错误(如果它是隐藏的)。

应该有错误,因为您同时使用“
mysql
”和“
mysqli
“连接类型。无法说明在连接文件中实现了哪个方法,因为未提供该方法。只使用一种类型。如果问题没有解决,请尝试添加

error_reporting(E_ALL);
ini_set('display_errors', '1'); 
到页面的顶部。(以上
包括“connectionfile.php”;


这将显示代码中发生的任何错误(如果是隐藏的)。

您应该在列上添加反勾号,因为其中一些是保留的MySQL字

 $sql = "UPDATE report SET 
                            `title` = $titl, 
                            `type` = $kind, 
                            `subject` = $subjec, 
                            `cause` = $caus, 
                            `solution` = $solutio, 
                            `penalty` = $penalt , 
                            `note` = $not, 
                            `ending` = $endin  
        WHERE `reference` = $ref";

保留字可在此页面上找到:

您应该在列上添加反勾号,因为其中一些是保留字

 $sql = "UPDATE report SET 
                            `title` = $titl, 
                            `type` = $kind, 
                            `subject` = $subjec, 
                            `cause` = $caus, 
                            `solution` = $solutio, 
                            `penalty` = $penalt , 
                            `note` = $not, 
                            `ending` = $endin  
        WHERE `reference` = $ref";

保留字可在此页面上找到:

如果您正在发布,首先需要设置
isset
,以确保您正在发布内容

if (isset($_POST['endings'])
您不需要设置会话来更新数据库

session_start(); //You don't need to start session, don't see any reason
您应该添加以下代码来检查错误

error_reporting(E_ALL);
ini_set('display_errors', '1'); 
最后,您的代码将如下所示

<?php
    include 'connectionfile.php' ;
    error_reporting(E_ALL);
    ini_set('display_errors', '1'); 
    if (isset($_POST['endings']) {
            $ref= mysql_real_escape_string($_POST['ref']);
            $titl= mysql_real_escape_string($_POST['titles']);
            $kind= mysql_real_escape_string($_POST['kindy']);
            $subjec= mysql_real_escape_string($_POST['subjects']);
            $caus= mysql_real_escape_string($_POST['causes']);
            $solutio= mysql_real_escape_string($_POST['solutions']);
            $penalt= mysql_real_escape_string($_POST['penaltys']);
            $not= mysql_real_escape_string($_POST['notes']);
            $endin= mysql_real_escape_string($_POST['endings']);
            session_start(); //You don't need to start session, don't see any reason 
            $sql = "UPDATE report SET title = '$titl', type = '$kind', subject = '$subjec', cause = '$caus', solution = '$solutio', penalty = '$penalt' , note = '$not', ending = '$endin'  WHERE reference = '$ref'";
            $result = mysqli_query($con, $sql) or die(mysql_error());
    }
?>

如果您正在发布内容,首先需要设置
isset
,以确保您正在发布内容

if (isset($_POST['endings'])
您不需要设置会话来更新数据库

session_start(); //You don't need to start session, don't see any reason
您应该添加以下代码来检查错误

error_reporting(E_ALL);
ini_set('display_errors', '1'); 
最后,您的代码将如下所示

<?php
    include 'connectionfile.php' ;
    error_reporting(E_ALL);
    ini_set('display_errors', '1'); 
    if (isset($_POST['endings']) {
            $ref= mysql_real_escape_string($_POST['ref']);
            $titl= mysql_real_escape_string($_POST['titles']);
            $kind= mysql_real_escape_string($_POST['kindy']);
            $subjec= mysql_real_escape_string($_POST['subjects']);
            $caus= mysql_real_escape_string($_POST['causes']);
            $solutio= mysql_real_escape_string($_POST['solutions']);
            $penalt= mysql_real_escape_string($_POST['penaltys']);
            $not= mysql_real_escape_string($_POST['notes']);
            $endin= mysql_real_escape_string($_POST['endings']);
            session_start(); //You don't need to start session, don't see any reason 
            $sql = "UPDATE report SET title = '$titl', type = '$kind', subject = '$subjec', cause = '$caus', solution = '$solutio', penalty = '$penalt' , note = '$not', ending = '$endin'  WHERE reference = '$ref'";
            $result = mysqli_query($con, $sql) or die(mysql_error());
    }
?>

执行查询后应检查错误。回显SQL语句并检查data@jens我确实使用错误报告检查了错误,没有显示任何内容,但得到了修复,感谢您的帮助最好使用预先准备好的语句。我不了解mysqli,然后继续这样编写代码。您应该在执行查询后检查错误。回显您的SQL语句并检查您的data@jens我确实使用错误报告检查了错误,没有显示任何内容,但得到了修复,感谢您的帮助最好使用准备好的语句。我不知道mysqli然后继续这样编码。这是OP的一个很好的开始。然后是准备好的STMT,然后是pdo命名的参数。这是OP的一个很好的开始。然后是准备好的STMT,然后是pdo命名的参数。在他的$sql字符串所在的位置,她仍然会有一个错误格式不正确。请看我的答案。可能是的,但我不会编辑答案中的代码,原因是,它可能不适用于OP,但它适用于代码,我无数次使用相同的代码,没有任何错误,如果答案中的代码是唯一的代码,那么这个问题将不会有4个答案,但答案中的代码充分解决了OP问题,因此标记为正确,但并不意味着其余3个答案中的代码是错误的。因此,对于未来的读者,我将把它留作参考,以便它可以解决其他人的问题,但他仍然会有一个错误,即他的$sql字符串格式不正确。请看我的答案。可能是的,但我不会编辑答案中的代码,原因是,它可能不适用于OP,但它适用于代码,我无数次使用相同的代码,没有任何错误,如果答案中的代码是唯一的代码,那么这个问题将不会有4个答案,但答案中的代码充分解决了OP问题,因此标记为正确,但并不意味着其余3个答案中的代码是错误的。所以,对于未来的读者,我将把它留给读者,这样可以解决其他人的问题,和平