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”,我不知道为什么。有人可以告诉我问题是什么吗?

这是两个页面:

“公鸡_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

您缺少=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."'";

您在最后一行缺少一个等于:

werkzaamheid = '$werkzaamheid'
于 2012-06-19T14:05:14.530 回答
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 回答