我正在建立一个包含要发布和更新的报告的网站, 我有以下代码,在浏览网页并检查解决方案后根本没有任何帮助。
选择参考编号后,此页面会从数据库中获取内容并在文本区域中回显它以供用户更新。 这是一个示例:
第二页:
<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
时,它确实显示更新的值
请注意,未报告/显示任何错误。
那么为什么这个查询不能更新我的数据库呢?
我对网络开发的了解很少,对我来说很容易,并提前感谢你!
答案 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