gpt4 book ai didi

PHP & MYSQL 数据库插入空白

转载 作者:行者123 更新时间:2023-11-29 05:25:39 25 4
gpt4 key购买 nike

好的,所以我是 php、ajax 和 mysql 的新手,我搜索了论坛,尝试了所有方法,但仍然一无所获。我知道这是一个简单的错误,但就目前而言,我的代码通过我的表单向数据库中输入空白信息,但是当我直接在查询中输入它出现在数据库中的字符串时,请帮助我

PS 我知道这可能不是最安全的代码,但这不是手头的问题

                  function message(){


alert("You are about to compose a message");
var stuff=[
'<div id ="compose_window">',
'<div id="new_message">',
'<div id="header"><strong> New Message </strong></div>',
'</div>',

'<form action="" method= "post">',
'<fieldset>',
'<strong>To</strong><br> <input type="text" id ="recipient" name="recipient" class="textfield"> <br>',
'<strong>Subject</strong><br> <input type="text" id="subject" name="subject" class="textfield"> <br><br>',
'<strong>Message</strong><br> <textarea id = "content" name="content" cols="40" rows="5"></textarea> <br>',
'<button id="send" type="button" onclick= loadXMLDoc()> <strong> Send </strong> </button>',
'</fieldset>',
'</form>',
'</div>',
'<div id="Response"></div>',

].join('');

document.getElementById("area").innerHTML= stuff;




}
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}

xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("ajaxResponse").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","send.php",true);
xmlhttp.send();
}

这是用于插入的 php

<?php
$con=mysqli_connect("127.9.52.129","boballen","","cheapomail");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$sql="INSERT INTO messages (subject, recipient_ids, body)
VALUES
('$_POST[subject]','$_POST[recipient]','$_POST[content]')";

if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
echo "Message Sent 1 record added";

mysqli_close($con);
?>

最佳答案

您的代码容易受到 SQL 注入(inject)攻击,请在查询中使用前使用准备好的语句或转义变量。插入时出现空行的原因是:

您在查询中使用 $_POST 数组,同时通过 Ajax 中的 GET 请求发送数据:

xmlhttp.open("GET","send.php",true);

使用 $_GET 而不是 $_POST:

$sql = "INSERT INTO messages (subject, recipient_ids, body)
VALUES (?,?,?)";

if ($stmt = $mysqli->prepare($sql)) {

/* bind parameters for markers */
$stmt->bind_param("sss", $_GET['subject'],$_GET['recipient'],
$_GET['content']);

/* execute query */
$stmt->execute();
}

Ajax

您也没有在 Ajax 请求中发送 GET 参数。尝试添加它们,使用类似这样的东西:

subject = encodeURIComponent(document.getElementById("subject").value);
recipient = encodeURIComponent(document.getElementById("recipient").value);
content = encodeURIComponent(document.getElementById("content").value);
xmlhttp.open("GET","send.php?subject=" + subject + "&recipient="
+ recipient + "&content=" + content,true);

从页面上的适当输入中获取主题、收件人和内容变量的位置。

关于PHP & MYSQL 数据库插入空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20632450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com