代码将两个变量发布到MySQL表。代码似乎工作得很好 - 唯一不起作用的是echo语句。会导致这种情况的原因是什么?
我在本地使用MAMP测试文件,PHP版本是最新的。我无法想到可能导致问题的任何其他因素。 SQL"插入"语句工作得很完美,代码的其他方面似乎都顺利完成。
<body>
<div>
First Name: <input type="text" id="fname" name="fname" />
<button id="submitMe" onclick="postData()">Click Here</button>
</div>
</body>
function postData(){
//HTML variable
var fname = document.getElementById("fname").value;
//Javascript Variable
var sname = "Second Name";
var http = new XMLHttpRequest();
var url = "index.php";
var params = "fname="+fname+"&sname="+sname;
http.open("POST", url, true);
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.onreadystatechange = function() {
if(http.readyState == 4 && http.status == 200){
//alert(http.responseText);
alert("Request recieved");
}
}
http.send(params);
}
<?php
if(!empty($_POST)){
$fname = $_POST['fname'];
$sname = $_POST['sname'];
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "tutorials";
$conn = new mysqli($servername, $username, $password, $dbname);
if($conn->connect_error){
die("Connection failed".$conn->connect_error);
}
$sql = "insert into tutorials_tbl(firstname, lastname) values('".$fname."', '".$sname."')";
if($conn->query($sql) === TRUE){
echo "New Record created successfully";
}else{
echo "Error: ".$sql."<br/>".$conn->error;
}
$conn->close();
}
?>
答案 0 :(得分:0)
要将PHP语句回显到主文档中,您需要通过AJAX脚本获取它。
<强> HTML 强>
将此项添加到您希望输出的位置。
<span id="output"></span>
<强> JS 强>
if (http.readyState == 4 && http.status == 200){
alert("Request recieved");
document.getElementById("output").innerHTML = this.responseText;
}
this.ResponseText
正在获取PHP文档的输出。
答案 1 :(得分:0)
这会导致什么? (...)我想不出任何可能的事情 导致问题。
在进行Web编程时,了解服务器端和客户端执行之间的区别非常重要。
请参阅这个优秀的问题(和答案):What is the difference between client-side and server-side programming?。
HTML和javascript都是客户端语言*。它们在浏览器中运行,即客户端。
然而,PHP是服务器端(它在“服务器”上运行)。在您的情况下,即使您使用MAMP在本地运行所有内容,仍然有客户端和服务器。他们碰巧在同一台机器上。服务器是Apache,它通过php
可执行文件运行PHP代码。
Wikipedia says(强调我的):
MAMP是macOS(操作系统)的首字母缩写; Apache,网络 服务器强>; MySQL,数据库管理系统;和PHP,Perl或Python,用于Web开发的所有编程语言。
现在,在您的示例中,您有一个简单的HTML文档,其输入字段类型为“text
”,并且提交按钮。通常,输入字段和提交按钮都是<form>
元素的一部分,但在您的代码中,没有<form>
。相反,您使用一些javascript来执行“提交”到服务器。
在您的代码中,我相信您可以取消注释这一行:
//alert(http.responseText);
它会显示一条弹出式提醒,其中包含echo
声明中的消息。
(*)可以有例外,这里没有一个例外。
答案 2 :(得分:-3)
是, 插入查询并不完美。 请删除双引号并仅使用单引号。