Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript PHP页面未更新MySQL数据_Javascript_Php_Jquery_Html_Mysql - Fatal编程技术网

Javascript PHP页面未更新MySQL数据

Javascript PHP页面未更新MySQL数据,javascript,php,jquery,html,mysql,Javascript,Php,Jquery,Html,Mysql,我似乎在任何方面都找不到解决我一直遇到的问题的办法。 我有两个页面,一个HTML页面和一个PHP页面。HTML页面简单地从数据库中的列填充下拉列表。其要点如下: <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script> <script> $(document).r

我似乎在任何方面都找不到解决我一直遇到的问题的办法。 我有两个页面,一个HTML页面和一个PHP页面。HTML页面简单地从数据库中的列填充下拉列表。其要点如下:

        <head>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
    <script>
        $(document).ready(function() {
            $('#select_site_form').submit(function(event) {
                $.ajax({
                  type: "POST",
                  url: 'project_testing.php',
                  data: { site_name: $("#site_name_id").val() },
                });
            }); // end of submit function
        }); //end of document.ready function
    </script>
    </head>

    <body>
    <form  method="POST" action="project_testing.php" id="select_site_form">
    <?php
        $username = "root";
        $password = "";
        $hostname = "localhost"; 

        //connection to the database
        $dbhandle = mysql_connect($hostname, $username, $password) 
          or die("Unable to connect to MySQL");

        $selected = mysql_select_db("database_name", $dbhandle) 
          or die("Could not select database");


        $sql = "SELECT site_name FROM table_name where site_name != ''";
        $result = mysql_query($sql);

        echo "Please select which site's information you would like to update.<br><br>";
        echo "<select name='site_name' id='site_name_id'>";
        while ($row = mysql_fetch_array($result)) {
            echo "<option value='" . $row['site_name'] . "'>" . $row['site_name'] . "</option>";
        }
        echo "</select>";
    ?>
    <input type="submit" name="submit" value="Select">
    </form>
    </body>
然后,PHP回显一个HTML表单,并用站点信息填充文本框。问题是,当我单击“提交”按钮时,信息是数据库被删除,但站点的“名称”字段除外:

<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<script>
    $(document).ready(function() {
        $('#update_info_form').submit(function(event) {
            var region = document.getElementById('region').value;
            $sql="UPDATE `internal_tracker` SET `region`= document.getElementsByName('region').value";
        }); // end of submit function
    }); //end of document.ready function
</script>
</head>

<?php

$username = "root";
$password = "";
$hostname = "localhost"; 

//connection to the database
$dbhandle = mysql_connect($hostname, $username, $password) 
  or die("Unable to connect to MySQL");

$selected = mysql_select_db("database_name",$dbhandle) 
  or die("Could not select database");

$site_name = $_POST["site_name"];

echo "Updating site information for &nbsp;&nbsp;"; echo $site_name;

//Retrieve data from database
$sql="SELECT * FROM table_name WHERE site_name='$site_name'";
$result=mysql_query($sql);

while ($row = mysql_fetch_assoc($result)) {
    echo '<form method="POST" action="project_testing.php" id="update_info_form">
        <table>
            <tr>
                <td><h3>Property Data</h3></td>
            </tr>
            <tr>
            <tr>
                <td> Region: </td><td> <input type="text" "name="region" id="region" value="'.$row['region'].'"></td>
            </tr>
            </tr>
            <tr>
                <td> Site Name: </td><td> <input type="text" name="site_name" value="'.$row['site_name'].'"></td>
            </tr>
            <tr>
                <td> Street Address: </td><td> <input type="text" name="street_address" value="'.$row['street_address'].'"></td>
            </tr>
            <tr>
                <td> City/State/Zip: </td><td> <input type="text" name="city_state_zip" value="'.$row['csz'].'"></td>
            </tr>
            <tr>
                <td> Priority Ranking: </td><td> <input type="text" name="priority_ranking" value="'.$row['priority_ranking'].'"></td>
            </tr>
      </table>

      <input type="submit" name="submit" value="Update">';
}

if(isset($_POST['submit'])) {
    $query = "UPDATE table_name SET region='".addslashes($_POST['region'])."', street_address='".addslashes($_POST['street_address'])."', csz='".addslashes($_POST['csz'])."', priority_ranking='".addslashes($_POST['priority_ranking'])."' WHERE site_name='".addslashes($_POST['site_name'])."'";
    mysql_query($query);
}

mysql_close();
?>
有人能看到我做错了什么,或者我缺少了一些语法吗?我已经在这上面停留了一段时间。

将更新查询放在选择查询之前。您将根据数据库中的信息构建表单,然后更新数据库


并按照评论者所说的去做,并保护自己免受伤害。

在代码的这一部分:

if(isset($_POST['submit'])) {
    $query = "UPDATE table_name SET region='".addslashes($_POST['region'])."', street_address='".addslashes($_POST['street_address'])."', csz='".addslashes($_POST['csz'])."', priority_ranking='".addslashes($_POST['priority_ranking'])."' WHERE site_name='".addslashes($_POST['site_name'])."'";
    mysql_query($query);
}

设置了$\u POST['submit'],设置了$\u POST['site\u name'],其他$\u POST字段为空,因为ajax POST没有发送它们。因此,您的表更新会将这些引用的字段设置为空,正如您所看到的。

您是否尝试过通过var\u dump$\u POST调试以查看正在发布的内容。您还可以回显$query以查看查询是如何形成的。您也不应该使用mysql函数,因为它们会贬值。请参阅mysqli。除了Tristan提到的内容之外,上面的代码还需要SQL注入和XSS。@Tristan这绝对是一个开始,当我执行var_dump$POST时,屏幕上会打印一个arraysize=13,尽管它应该更大,因为我有34个文本fields@AlvaroMontoro是的,现在仍然是,一旦基本功能正常运行,我将进行修复,谢谢。您是否检查了34个文本字段是否都有唯一的名称?@Jozzie93如果有效,请接受此答案。