Javascript 函数从JS发送到PHP

Javascript 函数从JS发送到PHP,javascript,php,jquery,mysql,Javascript,Php,Jquery,Mysql,我试图传递删除记录的“隐藏”值。但是JS函数发送数据,但是mysql代码不起作用。 使用“insert to”可以工作,但奇怪的是,相同的代码不能工作 This is my code. <script type="text/javascript"> function invia() { var hides = document.getElementById('hide').value; $.ajax({

我试图传递删除记录的“隐藏”值。但是JS函数发送数据,但是mysql代码不起作用。 使用“insert to”可以工作,但奇怪的是,相同的代码不能工作

This is my code.

    <script type="text/javascript">
        function invia()
     {
        var hides = document.getElementById('hide').value;

          $.ajax({
              type: 'POST',
              url: "note_db_php/delete_db_note.php",
              data: {"hide": hides},
              success: function(data){
                console.log("Dati inviati");
              },

              error: function(data) {
                console.log("Dati non inviati");
              }
          });
      };

    </script>
这是我的代码。
函数invia()
{
var hides=document.getElementById('hide').value;
$.ajax({
键入:“POST”,
url:“note_db_php/delete_db_note.php”,
数据:{“隐藏”:隐藏},
成功:功能(数据){
控制台日志(“Dati inviati”);
},
错误:函数(数据){
console.log(“Dati非inviati”);
}
});
};
这是删除页面

    <?php
    $servername = "";
    $username = "";
    $password = "";
    $dbname = "";

    $hide = $_POST["hide"];



// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// sql to delete a record
$sql = "DELETE FROM note WHERE id='$hide'";

if ($conn->query($sql) === TRUE) {
echo "Record deleted successfully";
} else {
echo "Error deleting record: " . $conn->error;
}

$conn->close();
?>

我认为问题在于sql查询-$sql=“DELETE FROM note WHERE id=$hide”

你能把$hide放在单引号里试试吗


$sql=“从注释中删除,其中id='$hide'”//这将起作用

这里是您的sql语法问题,还有一行

在这里输入代码 否则,请打开导致错误的代码

更新了这里的查询,它的工作

// sql to delete a record
$sql = "DELETE FROM note WHERE id='$hide'";

if ($conn->query($sql) === TRUE) {
echo "Record deleted successfully";
} else {
echo "Error deleting record: " . $conn->error;
}

缺少属性
数据类型
,并且
类型
应该是
方法

$.ajax({
  url:"note_db_php/delete_db_note.php",
  method:'POST',
  dataType:'json',
  data:{
    "hide": hides
  },
  success:function(data) {
    console.log("Dati inviati"); 
  },
  error: function (request, status, error) {
    console.log("Dati non inviati");
  }
});
替换您的查询-

$sql=“从注释中删除,其中id='$hide'

低于一个-

$sql = "DELETE FROM note WHERE id = ".$hide;

在ajax端,请控制您的
数据。如果出现错误,请回显您的查询(回显$sql),然后在PHPMyAdmin中复制并运行查询。

我不知道您的代码为什么不起作用——您没有详细描述您收到的错误消息。但您还有一个问题,就是您将自己置于SQL注入攻击的环境中,因此您应该使用一个准备好的语句。如果这也解决了您的问题(可疑),那么这是一个额外的好处:

$stmt = $conn->prepare("DELETE FROM note WHERE id=?");
/* Bind our parameter: */
$stmt->bind_param('i', $hide); // assuming $hide is an integer value, else use 's' for string
$success = $stmt->execute(); // execute the statement
if (!$success) {
    error code here
}
$stmt->close();

它以什么方式“不起作用”?浏览器的开发控制台上是否存在JavaScript错误?在开发工具中,是否提出了AJAX请求?它是否包含您期望的数据?服务器的响应是什么?您的代码对SQL注入非常开放,那么实际执行的确切运行时查询是什么呢?您可以在发送AJAX请求之前先将console.log隐藏值,然后检查该值是否存在,或者是否传递空值。此外,隐藏值是字符串或整数类型?如果我处理请求并将
1或1
作为
hide
的值发送,您认为会发生什么?这是一个SQL注入的例子!我认为
hide
的麻烦值应该是
1'或'1
,这会产生:
从注释中删除id='1'或'1'
。但@Wiimm的要点是,您需要使用预先准备好的语句,否则您将面临SQL注入攻击。在本例中,有意或无意输入的“错误”值将导致删除所有行(假设其余代码正常工作)。似乎您发布了敏感/私人信息。请重置您的密码和/或撤销API密钥和令牌,因为它们在发布到internet时被视为已被破坏。您到底更改了什么,为什么更改?请对你的答案进行编辑,添加一些解释,以便其他人可以从中学习。不,问题仍然存在,我不明白,它可以工作的代码,但是使用函数时不要删除。但删除页面工作。您能否提供页面链接,以便我们检查或完成您如何调用函数的代码,以及调试中出现的错误?直到你不会报告调试错误,我们将如何检查它,你只是投票反对所有的答案,如我所见,那么为什么这是必要的?问题是,我没有错误的消息,只是这段代码不删除数据库上的记录。这很奇怪,因为如果没有JS,它会工作@CarloPennetta:那么现在是进行调试的时候了。依赖JavaScript中的
success
处理程序只能告诉您响应是成功的HTTP代码。看看您的服务器端代码,它没有理由不做出这样的响应。但你也需要检查一下反应中的内容。使用浏览器的调试工具观察服务器的完整AJAX响应。里面有什么?在服务器端代码中添加有用的输出(例如回显
$sql
)并在调试工具中观察。里面有什么?您需要调试。JavaScript代码日志记录是“Dati ivati”还是“Diati non invati”或两者都不记录?您知道您是否正在将其备份到PHP代码中吗?“echo”语句将被发送回AJAX请求,这样您就不会在屏幕上看到它们。您可以尝试使用
file\u put\u contents
将一些输出写入日志文件,而不是使用
echo
。但是你真的应该用一个准备好的语句来替换你的代码。请阅读我对原始问题的评论,该问题涉及为
hide
传递值
1'或'1