【问题标题】:SQL INSERT INTO doesn't workSQL INSERT INTO 不起作用
【发布时间】:2012-06-18 12:59:00
【问题描述】:

我对这段代码感到头疼:

<html>
<head>
  <title>Westpop</title>
  <link rel="stylesheet" href="opmaak.css">
</head>
<body>
<div id="header"><a href="Index.php"></a></div>

<div id="content">
<table cellpadding="5" align="center">
<th colspan="2" align="left">Registeren:</th>
<form name="registreren"  method="post" action="registratie.php">
<tr>
    <td>Email</td>
    <td><input type="text" size="50" placeholder="email@email.com" name="email"></td>
</tr>
<tr>
    <td>Voornaam</td>
    <td><input type="text" size="50" placeholder="" name="voornaam" ></td>
</tr>
<tr>
    <td>Achternaam</td>
    <td><input type="text" size="50" placeholder="" name="achternaam"></td>
</tr>
<tr>
    <td>Geboorte Datum</td>
    <td><input type="text" size="50" placeholder="dd-mm-jjjj" name="geboortedatum"></td>
</tr>
<tr>
    <td>Geslacht</td>
    <td>M<input type="radio" size="50" value="m" name="geslacht">
    V<input type="radio" size="50" value="v" name="geslacht"></td>

</tr>
<tr>
    <td>Wachtwoord</td>
    <td><input type="password" size="50" placeholder="min. 6 tekens" name="wachtwoord"></td>
</tr>
<tr>
    <td>Woonplaats</td>
    <td><input type="text" size="50" placeholder="" name=""></td>
</tr>
<tr>
    <td>Telefoonnummer</td>
    <td><input type="text" size="50" placeholder="min. 9 tekens" name="telefoonnummer"></td>
</tr>
<tr>
    <td>Functie</td>
    <td><select name="functie">
<option value="catering">Catering</option>
<option value="muziekpodia">Muziek en podia</option>
<option value="vervoerovernachten">Vervoer en overnachten</option>
<option value="logistiekbeveiliging">Logistiek en beveiliging</option>
<option value="diversen">Diversen</option>
</select></td>
</tr>
<tr align="right">
    <td></td>
    <td><input type="reset" value="Wissen"><input type="submit" name="verzenden" value="Verzenden"></td>
</tr>
</form>
</table>
</div>

 <?php 

    $host = "localhost";
    $gebruikersnaam = "root";
    $wachtwoord = "";
    mysql_connect($host, $gebruikersnaam, $wachtwoord);

    $demooistedatabase = "c5g4westpopintranet";
    mysql_select_db($demooistedatabase);


    $achternaam = $_POST["achternaam"];
    $voornaam = $_POST["voornaam"];
    $gbdatum = $_POST["geboortedatum"];
    $email = $_POST["email"];
    $geslacht = $_POST["geslacht"];
    $wachtwoord = $_POST["wachtwoord"];
    $woonplaats = $_POST["woonplaats"];
    $telefoonnummer = $_POST["telefoonnummer"];
    $functie = $_POST["functie"];

    mysql_query($query); 

    $query ="   INSERT INTO vrijwilliger (vrijwilligerID, voornaam, achternaam, gbdatum, geslacht, wachtwoord, woonplaats, adres, telefoonnummer, functie, activiteitID, groepID, email)
                VALUES( ,'".$voornaam."','".$achternaam."','".$gbdatum."','".$geslacht."','".$wachtwoord."','".$woonplaats."','".$adres."','".$telefoonnummer."','".$functie."','','','".$email."');";


    echo mysql_error();
?>
<?php
include ("html_end.php");
?>

已经尝试了几个小时,但他只是不想插入数据库。 我认为这是 SQL 查询的问题,但我看不到它。 没什么好说的了

编辑 1:

感谢所有答案!我现在像这样编辑代码:

 $query ="   INSERT INTO vrijwilliger (vrijwilligerID,voornaam, achternaam, gbdatum, geslacht, wachtwoord, woonplaats, adres, telefoonnummer, functie, activiteitID, groepID, email)
                        VALUES(NULL, '".$voornaam."','".$achternaam."','".$gbdatum."','".$geslacht."','".$wachtwoord."','".$woonplaats."','".$adres."','".$telefoonnummer."','".$functie."','','','".$email."');";

mysql_query($query) or die ("FOUT: ". mysql_error());

现在我得到了错误: 无法添加或更新子行:外键约束失败(c5g4westpopintranet/vrijwilliger, CONSTRAINT vrijwilliger_ibfk_1 FOREIGN KEY (activiteitID) REFERENCES activiteit (activiteitID))

【问题讨论】:

  • mysql_error() 说什么?可能是VALUES 位之后的额外逗号,不应该存在。
  • MASSIVELY面临SQL Injection attacks的风险...学会在将数据放入数据库之前清理数据
  • 你不需要最后的“;”在 mysql_query 中使用时在查询结束时,但我认为它不会导致失败。请echo $query;

标签: php mysql html sql forms


【解决方案1】:

你已经在函数调用之后编写了查询

mysql_query($query); 

    $query ="   INSERT INTO vrijwilliger (vrijwilligerID, voornaam, achternaam, gbdatum, geslacht, wachtwoord, woonplaats, adres, telefoonnummer, functie, activiteitID, groepID, email)
                VALUES( ,'".$voornaam."','".$achternaam."','".$gbdatum."','".$geslacht."','".$wachtwoord."','".$woonplaats."','".$adres."','".$telefoonnummer."','".$functie."','','','".$email."');";

应该是这样的

 $query ="   INSERT INTO vrijwilliger (vrijwilligerID, voornaam, achternaam, gbdatum, geslacht, wachtwoord, woonplaats, adres, telefoonnummer, functie, activiteitID, groepID, email)
                VALUES( ,'".$voornaam."','".$achternaam."','".$gbdatum."','".$geslacht."','".$wachtwoord."','".$woonplaats."','".$adres."','".$telefoonnummer."','".$functie."','','','".$email."');";

mysql_query($query);

【讨论】:

  • 而且VALUES( , 附近有 sql 语法错误。那必须是:VALUES(null,...
【解决方案2】:

您必须在执行之前设置查询...

例如$query= 之前 mysql_query

$functie = $_POST["functie"];

$query ="   INSERT INTO vrijwilliger (vrijwilligerID, voornaam, achternaam, gbdatum, geslacht, wachtwoord, woonplaats, adres, telefoonnummer, functie, activiteitID, groepID, email)
                VALUES( ,'".$voornaam."','".$achternaam."','".$gbdatum."','".$geslacht."','".$wachtwoord."','".$woonplaats."','".$adres."','".$telefoonnummer."','".$functie."','','','".$email."');";

mysql_query($query); 

【讨论】:

    【解决方案3】:

    是因为您的调用 mysql_query($query); 出现在您分配给 $query 变量之前吗?

    【讨论】:

      【解决方案4】:

      我相信vrijwilligerID 设置为AUTO_INCREMENT

      因此,而不是

          mysql_query($query); 
      
          $query ="   INSERT INTO vrijwilliger (vrijwilligerID, voornaam, achternaam, gbdatum, geslacht, wachtwoord, woonplaats, adres, telefoonnummer, functie, activiteitID, groepID, email)
                      VALUES( ,'".$voornaam."','".$achternaam."','".$gbdatum."','".$geslacht."','".$wachtwoord."','".$woonplaats."','".$adres."','".$telefoonnummer."','".$functie."','','','".$email."');";
      

      使用这个

      $query ="INSERT INTO vrijwilliger (voornaam, achternaam, gbdatum, geslacht, wachtwoord, woonplaats, adres, telefoonnummer, functie, activiteitID, groepID, email)
               VALUES('$voornaam','$achternaam','$gbdatum','$geslacht','$wachtwoord','$woonplaats','$adres','$telefoonnummer','$functie',null,null,'$email')";
      mysql_query($query); 
      

      请试试这个,如果您遇到任何问题,请告诉我。

      更新 1

      对于编辑 1: 您在设置 activiteitID=null 时收到此错误,这是不可接受的,因为 null 不是表 @987654327 中存在的任何 ID @

      【讨论】:

        【解决方案5】:

        通过更改修复 INSERT

        插入到 vrijwilliger (vrijwilligerID, voornaam

        作者

        插入到 vrijwilliger (voornaam)

        如果不行你可以试试:

        • 检查您是否有足够的权限来执行查询
        • 编辑您的问题并发布echo mysql_error();的结果
        • 回显构建的 sql 并尝试手动执行到 mysql 中

        【讨论】:

          【解决方案6】:
           $query ="   INSERT INTO vrijwilliger (vrijwilligerID, voornaam, achternaam, gbdatum, geslacht, wachtwoord, woonplaats, adres, telefoonnummer, functie, activiteitID, groepID, email)
                          VALUES( ,'".$voornaam."','".$achternaam."','".$gbdatum."','".$geslacht."','".$wachtwoord."','".$woonplaats."','".$adres."','".$telefoonnummer."','".$functie."','','','".$email."');";
          

          您没有在上述查询中为该字段“vrijwilligerID”发送任何值。如果是自增ID,则不需要设置该值。

          $query ="   INSERT INTO vrijwilliger (voornaam, achternaam, gbdatum, geslacht, wachtwoord, woonplaats, adres, telefoonnummer, functie, activiteitID, groepID, email)
                              VALUES( '".$voornaam."','".$achternaam."','".$gbdatum."','".$geslacht."','".$wachtwoord."','".$woonplaats."','".$adres."','".$telefoonnummer."','".$functie."','','','".$email."');";
          

          否则将其设置为空白值''。

          其次,您在设置查询变量之前使用 mysql_query 函数。所以像这样使用它。

           $query ="   INSERT INTO vrijwilliger (vrijwilligerID,voornaam, achternaam, gbdatum, geslacht, wachtwoord, woonplaats, adres, telefoonnummer, functie, activiteitID, groepID, email)
                                  VALUES(NULL, '".$voornaam."','".$achternaam."','".$gbdatum."','".$geslacht."','".$wachtwoord."','".$woonplaats."','".$adres."','".$telefoonnummer."','".$functie."','','','".$email."');";
          
          mysql_query($query);
          

          【讨论】:

            【解决方案7】:
            mysql_query($query); 
            
                    $query ="   INSERT INTO vrijwilliger (vrijwilligerID, voornaam, achternaam, gbdatum, geslacht, wachtwoord, woonplaats, adres, telefoonnummer, functie, activiteitID, groepID, email)
                                VALUES( ,'".$voornaam."','".$achternaam."','".$gbdatum."','".$geslacht."','".$wachtwoord."','".$woonplaats."','".$adres."','".$telefoonnummer."','".$functie."','','','".$email."');";
            

            我不了解 PHP,但在我看来,您正在尝试在将查询分配给变量之前执行查询...这两行不应该交换位置吗?

            【讨论】:

              【解决方案8】:

              您似乎缺少值中的一个参数。

                $query ="   INSERT INTO vrijwilliger (vrijwilligerID, voornaam, achternaam, gbdatum, geslacht, wachtwoord, woonplaats, adres, telefoonnummer, functie, activiteitID, groepID, email)
                              VALUES( **Need A Value Here**,'".$voornaam."','".$achternaam."','".$gbdatum."','".$geslacht."','".$wachtwoord."','".$woonplaats."','".$adres."','".$telefoonnummer."','".$functie."','','','".$email."');";
              

              除非 vrijwilligerID 在这种情况下是自动生成的,否则它应该从第一组值中删除。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2016-06-19
                • 1970-01-01
                • 1970-01-01
                • 2016-05-20
                • 2023-03-29
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多