PHP从数据库中选择结果,检查它们,进行更新并打印它们
我给你举了一个我的问题的简化例子,然后试着解释一下:PHP从数据库中选择结果,检查它们,进行更新并打印它们,php,mysql,ajax,Php,Mysql,Ajax,我给你举了一个我的问题的简化例子,然后试着解释一下: <?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'] == 't
<?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";
?>
原因与是否使用Ajax无关。您增加的是数据库中的更改值,而不是PHP变量中的更改值 就在这一行之前:
mysqli_query($connect, "UPDATE table SET changes=changes+1, value='$value' WHERE id = '$id'");
添加以下内容:
$informations['changes']++;
备注
虽然您在$value
中使用了转义引号来避免,但最好准备语句,而不是将值串联到语句中
字段变化是数字的,因此此比较是错误的:
if($informations['changes'] <= '100'){
if($informations['changes']原因与是否使用Ajax无关。您正在增加数据库中的更改值,而不是PHP变量中的更改值
就在这一行之前:
mysqli_query($connect, "UPDATE table SET changes=changes+1, value='$value' WHERE id = '$id'");
添加以下内容:
$informations['changes']++;
备注
虽然您在$value
中使用了转义引号来避免,但最好准备语句,而不是将值串联到语句中
字段变化是数字的,因此此比较是错误的:
if($informations['changes'] <= '100'){
if($informations['changes']首先,感谢您的回答:)所以每次我需要执行更新查询时,我都必须这样做?例如:mysqli_query($connect,“update table SET changes=changes+1,value='$value',value2='$value2',value3='$value3',其中id='$id');$informations['changes'++;$informations['value']=$value;$informations['value2']=$value2;$informations['value3']=$value3;我说得对吗?是的,如果您需要所有这些信息。如果是这样,您可能希望在更新后立即重新执行select语句:$informations=mysqli_fetch_数组(mysqli_查询($connect,“select*FROM table WHERE id='$id'));
。但是您只需要输出正确数量的更改,而++
行是一个更快的解决方案。首先,感谢您的回答:)所以每次我需要执行更新查询时,我都必须这样做?例如:mysqli_查询($connect,“更新表集changes=changes+1,value='$value',value2='$value2',value3='$value3',其中id='$id')$信息['changes']++$信息['value']=$value$信息['value2']=$value2$信息['value3']=$value3;我说的对吗?是的,如果你需要这些信息。如果是这样,您可能希望在更新之后立即重新执行select语句:$informations=mysqli_fetch_数组(mysqli_query($connect,“select*FROM table WHERE id='$id')代码>。但是您只需要输出正确数量的更改,而++
行是一个更快的解决方案。