我有一个数据库,我无法在其中插入值。这是我的数据库和我的代码。
你能告诉我我的问题是什么吗?
输出告诉我我的sql语法错误。但是,我可以毫无问题地从phpmadmin添加值。
当我使用代码时,我失败了。而且,我找不到任何问题。
非常感谢yuy。
<?php
$db_username = "root";
$db_password = "pass";
$db = "rmado";
$db_server = "localhost";
$db_handle = mysql_connect($db_server, $db_username, $db_password);
$db_found = mysql_select_db($db, $db_handle);
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
$title = $_POST['username'];
$desc = $_POST['password'];
$aaa = $_POST['type'];
$bbb = $_POST['email'];
$query = "insert into users(username, password, type, email) values ($title, $desc, $aaa, $bbb)";
mysql_query($query);
}
?>
<html>
<body>
<div id="login_form">
<form name="login_form" method="post" action="zort.php">
username: <input name="username" type="text" value="">
password: <input name="password" type="text" value="">
type: <input name="type" type="text" value="">
email: <input name="email" type="text" value="">
<input name="addtask" type="submit" value="add task">
</form>
</div>
<!-- end login_form-->
</body>
</html>
非常感谢你。
编辑:
id:int(5)
title:varchar(30)
desc:varchar(50)
assigner_id:int(5)
assignee_id:int(5)
creation_date:date
due_date:date
status_id:int(5)
category_id:int(5)
这是我的PHP代码:
$query = "insert into tasks (title, desc, assigner_id, assignee_id, creation_date, due_date, status_id, category_id) values ('$title', '$desc', $ass1, $ass2, '$cre', '$due', $stat, $cat)";
这段代码哪里错了?非常感谢你。
答案 0 :(得分:0)
根据您的原始问题:所有这些字段都是表格中的文字。对于这些文本字段,您不会在原始查询中使用带引号来封装值。也就是说,以下内容适用于您的示例:
$query = "insert into users (username, password, type, email) values " .
"('$title', '$desc', '$aaa', '$bbb')";
这将让MySQL知道您希望为这些字段插入哪些字符串。
然而,您在此页面上的内容存在一些问题。恶意用户可以将一些MySQL可接受的字符串放入这些字段中,这可能会对您的数据库造成损害。您需要转义输入字符串以防止恶意内容损坏您的数据库。
当您使用已弃用的库时,请考虑使用mysqli或PDO。有关示例,请参阅here。
此外,您的字段不应该是文本字段。他们真的应该是varchars,你应该限制他们的长度。
您的第二个查询需要使用反引号封装desc
,因为DESC
是用于降序的保留MySQL字。