我的PhP代码的其他方面似乎都有效,但Echo语句不会出现

时间:2018-03-13 06:31:01

标签: php echo

代码将两个变量发布到MySQL表。代码似乎工作得很好 - 唯一不起作用的是echo语句。会导致这种情况的原因是什么?

我在本地使用MAMP测试文件,PHP版本是最新的。我无法想到可能导致问题的任何其他因素。 SQL"插入"语句工作得很完美,代码的其他方面似乎都顺利完成。

HTML

    <body>
    <div>
        First Name: <input type="text" id="fname" name="fname" />
        <button id="submitMe" onclick="postData()">Click Here</button>
    </div>
</body>

JS

            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

<?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();
}
?>

3 个答案:

答案 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来执行“提交”到服务器。

你能看到吗?你有浏览器运行一些javascript代码,它向服务器发出请求。服务器处理请求,返回一些文本但从未被请求的javascript解析。

在您的代码中,我相信您可以取消注释这一行:

//alert(http.responseText);

它会显示一条弹出式提醒,其中包含echo声明中的消息。


(*)可以有例外,这里没有一个例外。

答案 2 :(得分:-3)

是, 插入查询并不完美。 请删除双引号并仅使用单引号。