我希望您将新信息(以 JSON 格式)异步发送到 PHP 页面。 PHP接收新数据并更新数据库

Posted

技术标签:

【中文标题】我希望您将新信息(以 JSON 格式)异步发送到 PHP 页面。 PHP接收新数据并更新数据库【英文标题】:I would like you to send the new information (as JSON) to the PHP page asynchronously. PHP receives the new data and updates the database 【发布时间】:2020-06-30 22:33:32 【问题描述】:

我的代码没有在数据库中异步更新,我应该点击“更新”按钮来更新它,当用户使用“更新”模式时,该功能应该起作用,他可以编辑信息然后通知页面他们完成了编辑..请帮忙???? html:

<form method="POST" action="EditCourse.php?id=<?php echo $courseid ?>" id="form">
<fieldset> <legend> Course Information</legend>
Course Title: <input type="text" name="title" id="title" value="<?php echo $name?>" onblur="validate(this.value)" pattern="[A-Za-z\s]*" ><br>
 Course Field: <input type="text" name="field" id="field" value="<?php echo $fied?>"  pattern="[A-Za-z\s]*"><br>
 Course Description:<textarea name="description" rows="8" pattern="[a-zA-Z]*"  oninvalid="setCustomValidity('Please enter character only. ')" cols="80"> <?php echo $des ?></textarea><br>
 Course Image:<input type="file" name="Book_cover"  id="Book_cover"><br>
 <button class="button">UPDATE</button>
 <div id="message"></div>
</fieldset>
</form>

Java 脚本:

  function validate(title)
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() 
  if (this.readyState == 4 && this.status == 200) 
    document.getElementById("message").innerHTML = this.responseText;
  ;
xhttp.open("POST", "EditCourse.php?courseid=17627", true);
 xhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
 xhttp.send("title="+title);
 

PHP:

 $ID3=$_GET['id'];
  $title3=$_POST['title'];
 $pic = base64_encode(file_get_contents(addslashes($pic)));
$sqlipdate="UPDATE Course SET Name='$title3' WHERE ID='$ID3'";

 $result =mysqli_query($connection,$sqlipdate);
$row = mysqli_fetch_assoc($result);
if(mysqli_num_rows($result)>0)
echo "<span>The update is saved</span>";
  
  else 
    echo "<span>error1</span>";
  

【问题讨论】:

这对sql注入开放。如果您不希望数据库突然噗!,请使用准备好的语句 【参考方案1】:

由于UPDATE查询不返回结果集,mysqli_num_rows($result)始终为0。

来自PHP doc on mysqli_query:

返回值

失败时返回 FALSE。对于成功的 SELECT、SHOW、DESCRIBE 或 EXPLAIN 查询 mysqli_query() 将返回一个 mysqli_result 对象。为了 其他成功的查询 mysqli_query() 将返回 TRUE。

您可能想查看mysqli_affected_rows

返回受最后一个 INSERT、UPDATE、REPLACE 或 DELETE 查询影响的行数。

【讨论】:

我试了一下,但没有任何改变:( 我的问题是我想在没有加载页面的情况下更新表格或点击更新按钮 按钮会做表单动作;在所有条件相同的情况下,它将转到 php,并进行更新,然后离开页面。当用户离开课程标题输入时(应该)调用该函数。您需要使用浏览器开发者工具中的调试器来查看 js 发生了什么。 这种情况下你知道怎么用json吗? 我认为问题是“为什么我的数据库没有得到更新?”基于此语句“我的代码未在数据库中异步更新”。如果不是这样,那我建议你在帖子里澄清一下,我会删除答案。

以上是关于我希望您将新信息(以 JSON 格式)异步发送到 PHP 页面。 PHP接收新数据并更新数据库的主要内容,如果未能解决你的问题,请参考以下文章

异步发送表单数据到JavaBean,并响应JSON文本返回

如何通过 AFNetWorking 2.0 将 JSON 格式的数据发送到 Web? [复制]

通过在jquery中添加函数发送ajax请求来加载数据库数据,以json的格式发送到页面

ajax异步获得json对象后格式化时间

Django 以 JSON 格式返回单个记录

Ajax json 数据格式