无法使用 HTML 和 PHP 更新 MySQL 中的值


can't update values in mysql using html and php

我正在尝试使用 html 和 php 制作一个表单来更新 mysql 数据库。

数据库更新(自动增量)键,但不向值添加任何字符串。 我搜索过有类似问题的人,但由于他们的代码与我的不同,我无法理解(我是 php 和 mysql 的菜鸟) 我认为我的问题是我使用 html 获取的方式价值观,但我可能是错的

<form action=submitform.php method=GET> 
     Name:<input type="text" name="cuName" size=20 maxlength=20><br>    
     Password:<input type="password" name="password" size=20 maxlength=45><br>
     Account:<input type="text" name="account" size=20 maxlength=45><br>
     Phone:<input type="tel" name="phone" size=10 maxlength=10><br>
     Email:<input type="text" name="email" size=20 maxlength=45><br>
<input type=submit>
</form>

我的PHP是

<?php
        mysql_connect(localhost,  myUsername, "myPassword");
        mysql_select_db(myDatabaseName);
        mysql_query("INSERT INTO Customer (cuName, password, 
                        account, phone, email)
                    Values('$cuName', '$password', '$account',
                            '$phone', '$email')");
        echo $cuName ." thank you for reserving!";
        print ($cuName);
    ?>

提前感谢您的任何帮助

您的代码依赖于要打开的REGISTER_GLOBALS;出于安全原因,它通常被关闭。

应将$cuName替换为$_GET['cuName']以获取从窗体发送的值。

此外,您应该转义进入数据库的任何值,否则您可能会面临 SQL 注入漏洞。

清理这两种情况的代码会导致如下所示:

<?php
        if (!mysql_connect(localhost,  myUsername, "myPassword")) {
              print 'There was an error connecting to the database'.mysql_error();
              exit(); 
        }
        if (!mysql_select_db(myDatabaseName)) { 
              print 'Could not select db. The error was: '.mysql_error();
              exit();
        }
        $query = "INSERT INTO Customer (`cuName`, `password`, `account`,`phone`,`email`)";
        $query .= "VALUES (";
        $query .= "'".mysql_real_escape_string($_GET['cuName'])."','";
        $query .= mysql_real_escape_string($_GET['password'])."','";
        $query .= mysql_real_escape_string($_GET['phone'])."','";
        $query .= mysql_real_escape_string($_GET['email'])."'";
        if (!mysql_query($query)) {
            print 'There was an error inserting '.$query.'. Error was '.mysql_error();
        } else {
            echo $_GET['cuName']." thank you for reserving!";
        }
        print $_GET['cuName'];
    ?>

我还添加了一些错误检查。您应该始终检查依赖于外部系统(如数据库)的功能的结果,因为您永远不知道数据库的状态是什么(它可能已关闭,无法正常工作等)。因此,您应该始终检查并打印任何错误消息。

您无需在任何地方定义任何 GET 值。 未定义$cuName等。

每个值都需要与 $_GET 相关联。 IE,

$cuName = $_GET['cuName']

但是,您还需要确保不要插入尚未清理的数据,以防止SQL注入。这方面的一个例子是:

$cuName = mysql_real_escape_string($_GET['cuName']);

所以,试试这个:

<?php
        mysql_connect(localhost,  myUsername, "myPassword");
        mysql_select_db(myDatabaseName);
        //Define Variables
        $cuName = mysql_real_escape_string($_GET['cuName']);
        $password = mysql_real_escape_string($_GET['password']);
        $account = mysql_real_escape_string($_GET['account']);
        $phone = mysql_real_escape_string($_GET['phone']);
        $email = mysql_real_escape_string($_GET['email']);
        mysql_query("INSERT INTO Customer (cuName, password, 
                        account, phone, email)
                    Values('$cuName', '$password', '$account',
                            '$phone', '$email')") or die (mysql_error());
        echo $cuName ." thank you for reserving!";
        print ($cuName);
    ?>

最好使用:

$cuname = $_GET['cuname'];

喜欢这个。。。。因为你的表单方法是在"GET"上,我的建议是POST数据而不是GET。