1

データベースの行を更新しようとしています。問題は、mySQL からエラーが発生することです。

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''' WHERE activiteitID = ''' at line 4

そのため、「activiteitID」を取得していません。その理由はわかりません。誰かが私に何が問題なのか教えてもらえますか?

これは 2 つのページです。

"roosters_wijzigen.php"

 <?php 
    include ("html_start.php"); 

    $activiteitID = $_GET["activiteitID"];
    $datum = $_POST["datum"];
    $tijd = $_POST["tijd"];
    $vrijwilligerID = $_POST["vrijwilligerID"];
    $werkzaamheid = $_POST["werkzaamheid"];

echo '

<div id="registreer">
    <table cellpadding="5" align="center">
            <tr><th colspan="2" align="left">Activiteit wijzigen:</th></tr>
            <form name="roosters_wijzigen"  method="get" action="roosters_wijziging.php"> ';    

            $query = "SELECT * FROM activiteit WHERE activiteitID = '$activiteitID'; ";
            $result = mysql_query($query); 

            while($row = mysql_fetch_array($result)){           
    echo'       <tr>
                <td>Datum</td>
                <td><input type="text" size="50" name="datum" value="'.$row['datum'].' "></td>
            </tr>
            <tr>
                <td>Tijd</td>
                <td><input type="text" size="50" name="tijd" value="'.$row['tijd'].' "></input></td>
            </tr> ';
            }
            ?>
            <tr>
            <td>Vrijwilliger</td>
            <td>
                <select name="vrijwilligerID">
                    <?php

                        $vrijwilligerID = $_POST["vrijwilligerID"];

                        $query ="   SELECT voornaam, achternaam, vrijwilligerID
                                    FROM vrijwilliger;";

                        $result = mysql_query($query);

                        while($row=mysql_fetch_array($result)){
                        echo "<option value=".$row['vrijwilligerID'].">".$row["voornaam"]." ".$row["achternaam"]."</option>";
                        }
                        ?>              
            </select>
            </td>
            </tr>
            <tr>
                <td>Werkzaamheid</td>
                <?php

                $query = "SELECT werkzaamheid FROM activiteit WHERE activiteitID = '$activiteitID'; ";
                $result = mysql_query($query); 
                while($row = mysql_fetch_array($result)){           
                echo '<td><textarea rows="6" cols="39" type="text" name="werkzaamheid">'.$row["werkzaamheid"].'</textarea></td>';}

                ?>
            </tr>
            </tr>
            <tr align="right">
            <td></td>
            <td><input type="reset" value="Wissen">
            <input type="submit" name="verzenden" value="verzenden">
            </td>
            </tr>
            <tr>
            </tr>
            <tr>
            Ga <a href="roosters_aanpassen.php" MEDIA=screen>hier</a></br> terug. </br>
            </tr>
            </form>
    </table></br>

<div>
<?php
include ("html_end.php");
?>

"roosters_wijziging.php"

<?php   
    include ("html_start.php");

    $activiteitID = $_GET["activiteitID"];
    $datum = $_POST["datum"];
    $tijd = $_POST["tijd"];
    $vrijwilligerID = $_POST["vrijwilligerID"];
    $werkzaamheid = $_POST["werkzaamheid"];


    $query ="UPDATE vrijwilliger SET datum = '$datum', 
                                     tijd = '$tijd', 
                                     vrijwilligerID = '$vrijwilligerID', 
                                     werkzaamheid '$werkzaamheid'
                                        WHERE activiteitID = '".$activiteitID."'";
    mysql_query($query) or die ( mysql_error());

    echo '<div id="registreer"> 
    Uw activiteit is succesvol toegevoegd.
    Ga <a href="roosters_aanpassen.php" MEDIA=screen>hier</a></br> terug. 
    </div> ';

    include ("html_end.php");   
?>
<?
/*

if(preg_match("/^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}$/", $datum) === 0 || preg_match("/^([0-9])"."([0-9])"."(\:([0-9])"."([0-9]))$/", $tijd) === 0 || $werkzaamheid !== '') 
    {
    echo '<div id="registreer">';
    echo '<font>datum moet op dit formaat ingevoerd worden: JJJJ-MM-DD<br><font>';
    echo '<font>Tijd moet op dit formaat ingevoerd worden: HH:MM <br><font>';
    echo '<font>U heeft de werkzaamheid niet aangegeven<br><font>';
    }
else{   */
?>

前もって感謝します。

4

4 に答える 4

0

更新SQLに=がありません:

werkzaamheid '$werkzaamheid'

への変更:

werkzaamheid = '$werkzaamheid'

しかし、_GET パラメータを SQL に直接渡していますが、これはノーノーです。

代わりに PDO とパラメータ化されたクエリを使用してください: http://www.php.net/manual/en/pdo.prepare.php

$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
$sth = $dbh->prepare('SELECT * FROM activiteit WHERE activiteitID = ?');
$sth->execute(array($activiteitID));

while($row = $sth->fetch()) {

}

上記のようにコードを更新すると、機能します。残りのクエリでも同じことを行います。

于 2012-06-19T14:06:53.233 に答える
0

=afterがありませんwerkzaamheid:

...
werkzaamheid = '$werkzaamheid'
WHERE activiteitID ...
于 2012-06-19T14:05:11.833 に答える
0

うまくいかないかもしれませんが、テーブル属性とテーブル名の前後に ` 文字を追加してみてください...次のように:

$query = "SELECT * FROM `activiteit` WHERE `activiteitID` = '$activiteitID'";
于 2012-06-19T14:05:14.127 に答える
0
"UPDATE vrijwilliger SET datum = '$datum', 
tijd = '$tijd', 
vrijwilligerID = '$vrijwilligerID', 
werkzaamheid '$werkzaamheid'
WHERE activiteitID = '".$activiteitID."'";

最後から 2 行目に等号がありません。

werkzaamheid = '$werkzaamheid'
于 2012-06-19T14:05:14.530 に答える