我创建了一个'创建个人资料'包含用户和密码条目的表单,供用户注册。我已设置我的代码以检索所有表单字段的值。我正在测试是否第一个名称更新到我的数据库,但它没有。当我提交表单时,我为失败的查询执行设置的消息显示:'错误查询请求'。我正确地连接到数据库,并尝试重新格式化我的查询字符串(带引号和带引号的变量):
$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>
答案 0 :(得分:1)
您可能还想检查您的表名,具体取决于您所获得的错误。
在调用mysqli_connect之前,您不需要定义$ dbc。
另外,您可能希望了解从mysqli更改为PDO。根据我的经验,PDO更容易使用。
编辑:错误 您可能希望将所有slq查询包装在try catch语句中,这样您就可以捕获抛出的所有异常,然后决定如何显示它们