【问题标题】:Phone Number Not Inserted Into Database电话号码未插入数据库
【发布时间】:2014-07-27 16:18:00
【问题描述】:

我正在创建一个简单的表单,它需要几个字段作为输入,运行一些 AJAX 检查并通过 PHP 提交到 SQL 数据库。我可以插入除电话号码以外的所有其他字段。这是代码的sn-p:

HTML ---

<form name="signupform" id="signupform" onSubmit="return false;">
<div>Phone Number: </div>
    <input id="phon" type="text" maxlength="20">
<button id="signupbtn" onClick="signup()">Create Account</button>
    <span id="status" style="color: red"></span>
</form>

JS ---

function signup() {
var status = document.getElementById("status");
var phone = document.getElementById("phon").value;
status.innerHTML = phone; //testing, doesn't display anything
        var ajax = ajaxObj("POST", "index.php"); // accepted
        ajax.onreadystatechange = function() {
            if(ajaxReturn(ajax) == true) {
                if(ajax.responseText != "Succesfully signed-up!"){ ///returned from php file
                    status.innerHTML = ajax.responseText;

                }

            }
        }
        ajax.send("phone="+phone); //shoots variable to php 
}

PHP ---

if(isset($_POST["phone"])) { 
                       $phone = $_POST['phone'];
               echo $phone; //was testing, again, nothing shows 
            $sql = "INSERT INTO users(phone) VALUES('$phone')";
        }
$query2 = mysqli_query($con, $sql); 
echo 'successfully_updated';

注意:我尝试检查 JS 和 PHP 是否正在接收电话号码,但它没有显示任何内容(但显示了其他表单元素,例如姓名和电子邮件,但已经测试过了)。但后来,在 PHP 代码中,当检查“if (isset($_POST["phone"])) 时,它没有显示任何错误,它会毫无问题地插入表单的其他元素。不知道为什么会这样发生了,有什么想法吗?我的猜测是,由于 JS 没有反映该值,这就是错误所在。

几个小时以来一直在寻找和尝试徒劳!任何帮助都会很棒,谢谢!

【问题讨论】:

  • 你是用整数保存电话号码吗?
  • 那么如果$phone 变量为空,您希望如何填充数据库列?
  • 使用萤火虫调试。通过 AJAX 调用设置了哪些值?
  • “你能找到错误”问题are not good questions for Stack Overflow。确保您提供一个简短但对问题的具体陈述,准确地告诉我们哪里出了问题。 “它不起作用”不是问题陈述。
  • 仅供参考,您对SQL injections 持开放态度。

标签: javascript php html ajax


【解决方案1】:
status.innerHTML = phone; //testing, doesn't display anything

必须

document.getElementById("status").innerHTML = phone; 

【讨论】:

  • 嗨,Govind,谢谢,但我错了,我错过了添加行 - var status = document.getElementById("status");所以事实并非如此。将行添加到代码中。谢谢。
【解决方案2】:

为什么不写 $query2 = mysqli_query($con, $sql) 或 die(mysqli_error()); 这样,你就可以看到发生了什么错误

【讨论】:

    【解决方案3】:

    使用 jQuery:

    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){
            phoneNum = $("#phon").val();
            $("#signupbtn").click(function(){
                $.ajax({url:"./index.php",data:{phone:phoneNum},success:function(result){
                    alert(result);
                }});
            });
        });
    </script>
    

    【讨论】:

      【解决方案4】:

      请试试这个

       $sql = "INSERT INTO users(phone) VALUES('".$phone."')";
      

      【讨论】:

      • 谢谢,但所有其他插入数据库的操作都可以使用“$phone”、“$name”等方式,这不是问题。
      • @user3714817 因为双引号中不接受单引号
      猜你喜欢
      • 1970-01-01
      • 2010-09-22
      • 1970-01-01
      • 2013-12-09
      • 2016-05-13
      • 1970-01-01
      • 1970-01-01
      • 2011-06-18
      • 1970-01-01
      相关资源
      最近更新 更多