php文件中的mysql查询错误?

时间:2012-01-08 16:01:05

标签: php mysql sql

我试图将一些数据插入我的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);

3 个答案:

答案 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."')";