我向您展示了我的问题的简化示例,然后尝试解释它:
<?php
$connect = mysqli_connect($link, $user, $pw, $db);
$informations = mysqli_fetch_array(mysqli_query($connect, "SELECT * FROM table WHERE id = '$id' "));
if($_POST['submit']){
if($informations['show'] == 'true'){
if($informations['changes'] <= '100'){
$value = mysqli_real_escape_string($connect, $_POST['value']);
mysqli_query($connect, "UPDATE table SET changes=changes+1, value='$value' WHERE id = '$id'");
}else{
echo "You made too much changes.";
}
}else{
echo "You cannot change this.";
}
}
if($informations['show'] == 'true'){
echo "<form action='' method='post'>";
echo "<input type='text' name='value' /><input type='submit' name='submit' value='Update' />";
echo "</form>";
}
echo "<br/>You currently have made ".$informations['changes']." changes";
?>
所以,看看这段代码,我可以看到这个:
我进入我的页面并在提交按钮附近输入文本
在这之下,我写了#34;你目前已经做了0次更改。&#34;
如果我按下提交按钮我的页面刷新,我可以看到:
提交按钮附近的文本输入
在此我写了#34;你目前已经做了0次更改。&#34;
如果我这次刷新页面,我可以看到:
提交按钮附近的文本输入
根据这个,我写了#34;你目前已经做了1次更改。&#34;
所以我想问你的是:
有没有办法执行更新并在正常表单刷新后直接看到页面上的更改?
我不能把&#34;更新查询&#34;在&#34;选择查询&#34;之上因为在进行更新之前我需要检查用户的值....
我知道我可能会使用AJAX,但如果没有AJAX,php无法做到这一点似乎很奇怪,这需要更多的时间...
任何帮助将不胜感激,谢谢!
答案 0 :(得分:0)
原因与使用Ajax无关。您正在增加数据库中的更改值,但不会增加PHP变量。
就在这一行之前:
mysqli_query($connect, "UPDATE table SET changes=changes+1, value='$value' WHERE id = '$id'");
添加以下内容:
$informations['changes']++;
<强>说明强>
虽然您已在$value
中转义了引号以避免SQL injection,但最好准备语句而不是将值连接到其中。
字段更改是数字,因此这种比较是错误的:
if($informations['changes'] <= '100'){
应该没有引号:
if($informations['changes'] <= 100){
更改消息&#34; 过多更改&#34;到&#34; 太多的更改&#34;,因为更改是复数。