MySQL查询无法将用户输入添加到表中

时间:2015-05-20 20:10:20

标签: php mysql forms

我创建了一个'创建个人资料'包含用户和密码条目的表单,供用户注册。我已设置我的代码以检索所有表单字段的值。我正在测试是否第一个名称更新到我的数据库,但它没有。当我提交表单时,我为失败的查询执行设置的消息显示:'错误查询请求'。我正确地连接到数据库,并尝试重新格式化我的查询字符串(带引号和带引号的变量):

$query = "INSERT INTO employees(firstName) VALUES ('$first_name')";

我很感激为什么查询字符串没有正确执行的任何输入。这是格式化或变量的问题吗?

这是我的代码(故意清空值):

<?php

    define('DB_LOCATION', 'x');
    define('DB_USERNAME', 'x');
    define('DB_PASS', 'x');
    define('DB_NAME', 'x');

    $dbc = 0;

    $dbc = mysqli_connect(DB_LOCATION, DB_USERNAME, DB_PASS, DB_NAME)
        or die('Error connecting to database');

if(isset($_POST['submit']))  { 

    $first_name = $_POST['first'];
    $last_name = $_POST['last'];
    $email_address = $_POST['email_address'];
    $user_name = $_POST['user'];
    $user_password = $_POST['pass'];

    $query = "INSERT INTO employees(firstName) VALUES ('$first_name')";

    $result = mysqli_query($dbc, $query)
        or die('Error querying request');

        echo '<p>Congrats, your name has been added to the database</p>';


    }

?>

<!DOCTYPE html>
<head>
    <title></title>
      <meta charset="utf-8">
      <link type="text/css" rel="stylesheet" href="5_Signup_CSS.css">
</head>

<body>

<div class="formFormat">
<form name="signupForm" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<table class="tableFormat">
  <tr>Create an Account</tr>
    <tr>
        <td>First Name:</td><td><input type="text" id="first" name="first" value ="<?php echo $first_name ?>"/></td>
    </tr>

    <tr>
        <td>Last Name:</td><td><input type="text" id="last" name="last" value="<?php echo $last_name ?>" /></td>
    </tr>

    <tr>
        <td>Email:</td><td><input type="text" id="email_address" name="email_address" value="<?php echo $email_address ?>" /></td>
    </tr>

    <tr>
        <td>Username:</td><td><input type="text" id="user" name="user" value="<?php echo $user_name?>" /></td>
    </tr>

    <tr>
        <td>Password:</td><td><input type="text" id="pass" name="pass" value="<?php echo $user_password?>"/></td>
    </tr>
    <tr>
        <td><input type="submit" id="submit" name="submit" /></td>
    </tr>

</table>
</form>
</div>


<?php
    mysqli_close($dbc);
?>

</body>

</html>

1 个答案:

答案 0 :(得分:1)

<德尔> 我可以看到的一个问题是你将$ firstname值插入字面上“$ first_name”。 您需要将其更改为`('“。$ first_name。”')` `$ query =“INSERT INTO employees(firstName)VALUES('$ first_name')”;`

您可能还想检查您的表名,具体取决于您所获得的错误。

在调用mysqli_connect之前,您不需要定义$ dbc。

另外,您可能希望了解从mysqli更改为PDO。根据我的经验,PDO更容易使用。

编辑:错误 您可能希望将所有slq查询包装在try catch语句中,这样您就可以捕获抛出的所有异常,然后决定如何显示它们

PHP Try / Catch