我试图将一些数据插入我的mysql数据库。连接工作正常,但我有一个问题,正确地将查询发送到数据库。下面你可以在我的php fille中找到代码。我还发布了他们在数据库中的字段类型。
Fields in the mysql database:
Reservaties_id = int
Materialen_id = int
aantal = int
effectief_gebruikt = tinyint
opmerking = Varchar2
datum_van = date
datum_tot = date
$resID = $_REQUEST['resID'];
$materialen_id = $_REQUEST['materialen_id'];
$aantal = $_REQUEST['aantal'];
$effectief_gebruikt = $_REQUEST['effectief_gebruikt'];
$opmerking = $_REQUEST['opmerking'];
$datum_van = date('YYYY-MM-DD',$_REQUEST['datum_van']);
$datum_tot = date('YYYY-MM-DD',$_REQUEST['datum_tot']);
$string = "INSERT INTO `materialen_per_reservatie`(`reservaties_id`, `materialen_id`, `aantal`, `effectief_gebruikt`, `opmerking`, `datum_van`, `datum_tot`) VALUES ($resID, $materialen_id, $aantal, $effectief_gebruikt, '$opmerking', $datum_van, $datum_tot)";
mysql_query($string);
答案 0 :(得分:1)
您的代码存在一些您应该解决的严重问题。首先,它没有进行任何错误检查,因此当查询失败时,查询会无声地中断并不奇怪。检查错误,它会告诉您出现了什么问题 - 如何执行此操作会在manual on mysql_query()
或此reference question.中列出。例如:
$result = mysql_query($string);
// Bail out on error
if (!$result)
{
trigger_error("Database error: ".mysql_error(), E_USER_ERROR);
die();
}
在这种特定情况下,我很确定这是因为您没有在VALUES
关键字后面将引号括在引号中。
此外,您展示的代码容易受到SQL injection的攻击。你需要逃避你使用的每一个值:
$resID = mysql_real_escape_string($_REQUEST['resID']);
要使其正常工作,您需要将查询中的每个值放入引号中。
答案 1 :(得分:1)
您必须为日期字段'$dataum_van'
$string = "INSERT INTO `materialen_per_reservatie`(reservaties_id, materialen_id, aantal, effectief_gebruikt, opmerking, datum_van, datum_tot) VALUES ($resID, $materialen_id, $aantal, $effectief_gebruikt, '$opmerking', '$datum_van', '$datum_tot')";
这只是一个示例查询,而实现时不要忘记清理输入
答案 2 :(得分:0)
试试这个
$string = "INSERT INTO `materialen_per_reservatie`(`reservaties_id`) VALUES ('".$resID."')";