Php没有更新我的数据库

时间:2015-07-20 05:54:18

标签: php html mysql phpmyadmin

我正在建立一个包含要发布和更新的报告的网站, 我有以下代码,在浏览网页并检查解决方案后根本没有任何帮助。

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

第二页:

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

updated_preview_report.php页面:

<?php
include 'connectionfile.php' ;

$ref= mysql_real_escape_string($_POST['ref']);
$titl= mysql_real_escape_string($_POST['titles']);
$kind= $_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();

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

?>

当我回显任何更新的值,例如$title时,它确实显示更新的值

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

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

我对网络开发的了解很少,对我来说很容易,并提前感谢你!

4 个答案:

答案 0 :(得分:2)

首先,如果您要发帖,则需要设置_CRTIMP FILE * __cdecl __iob_func(void); ... #define stdin (&__iob_func()[0]) #define stdout (&__iob_func()[1]) #define stderr (&__iob_func()[2]) ,以确保发布内容。

isset

您无需将会话设置为更新数据库

if (isset($_POST['endings'])

您应该添加followig代码来检查错误

session_start(); //You don't need to start session, don't see any reason

最后你的代码看起来像

error_reporting(E_ALL);
ini_set('display_errors', '1'); 

答案 1 :(得分:1)

您需要转义您正在使用的变量,并使用concat .运算符将查询字符串组合在一起。

e.g。

之类的东西
$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 . "'";

您没有收到错误,因为UPDATE report SET title = '$titl', type = '$kind', subject = '$subjec', cause = '$caus', solution = '$solutio', penalty = '$penalt' , note = '$not', ending = '$endin' WHERE reference = $ref是有效的语法。

答案 2 :(得分:1)

因为您同时使用&#34; mysql&#34;和&#34; mysqli&#34;连接类型。无法说明连接文件中实现了哪种方法,因为它未提供。仅使用一种类型。如果问题仍未解决,请尝试添加

error_reporting(E_ALL);
ini_set('display_errors', '1'); 

到页面顶部。 (高于include 'connectionfile.php' ;

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

答案 3 :(得分:1)

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

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

此页面上有保留字词:https://dev.mysql.com/doc/refman/5.0/en/keywords.html