您的sql语法有错误;-和未定义的变量错误-可能已连接

axr492tv  于 2021-06-23  发布在  Mysql
关注(0)|答案(2)|浏览(243)

我对用php和sql编码还很陌生,所以我可能会有很多问题。但正如标题所说,我得到了这个错误。。。
sql语法有错误;请查看与mysql服务器版本对应的手册,以获取在第1行的“”附近使用的正确语法
我不知道这是指什么。我已经尽可能多地检查了代码,但找不到语法错误。也许我还不知道。

<?php 
// including the database connection file
include_once("config.php");

if(isset($_POST['update']) && isset($_GET['site']))
{    
$sitenumber = $_POST['sitenumber'];
$videolink = $_POST['videolink'];
$daynight = $_POST['daynight'];
$maxtents = $_POST['maxtents'];
$maxpersons = $_POST['maxpersons'];
$geography = $_POST['geography'];
$view = $_POST['view'];
$forestcover = $_POST['forestcover'];
$waterfront = $_POST['waterfront'];
$firepit = $_POST['firepit'];
$description = $_POST['description'];
$reslink = $_POST['reslink'];   

// checking empty fields
if(empty($sitenumber) || empty($videolink) || empty($daynight) || 
empty($maxtents) || empty($maxpersons) || empty($geography) || 
    empty($view) || empty($forestcover) || empty($waterfront) || 
empty($firepit) || empty($description) || empty($reslink)) {                
    if(empty($sitenumber)) {
        echo "<font color='red'>Site Number field is empty.</font><br/>";
    }

    if(empty($videolink)) {
        echo "<font color='red'>YouTube Link field is empty.</font><br/>";
    }

    if(empty($daynight)) {
        echo "<font color='red'>Day or overnight field is empty.</font> 
<br/>";
    }        

    if(empty($maxtents)) {
        echo "<font color='red'>Maximum Tents field is empty.</font><br/>";
    }

    if(empty($maxpersons)) {
        echo "<font color='red'>Maximum Persons field is empty.</font> 
 <br/>";
    }        

    if(empty($geography)) {
        echo "<font color='red'>Geography field is empty.</font><br/>";
    }

    if(empty($view)) {
        echo "<font color='red'>View field is empty.</font><br/>";
    }        

    if(empty($forestcover)) {
        echo "<font color='red'>Forest Cover field is empty.</font><br/>";
    }

    if(empty($waterfront)) {
        echo "<font color='red'>Waterfront Access field is empty.</font> 
 <br/>";
    }  

    if(empty($firepit)) {
        echo "<font color='red'>Firepit field is empty.</font><br/>";
    }        

    if(empty($description)) {
        echo "<font color='red'>Description field is empty.</font><br/>";
    }

    if(empty($reslink)) {
        echo "<font color='red'>Reservation Link Access field is empty. 
 </font><br/>";
    }       
} else {    
    //updating the table
    $result = mysqli_query($mysqli, "UPDATE sites SET 
 sitenumber='$sitenumber',videolink='$videolink',daynight='$daynight',
     maxtents='$maxtents',maxpersons='$maxpersons',geography='$geography', 
     view='$view',forestcover='$forestcover',waterfront='$waterfront', 
     firepit='$firepit',description='$description',reslink='$reslink' WHERE 
 sitenumber=$sitenumber");

    //redirectig to the display page. In our case, it is index.php
    //header("Location: index.php");
}
}
            echo mysqli_error($mysqli);
 ?>
<?php
//getting id from url
$sitenumber = $_GET['site'];

//selecting data associated with this particular id
$result = mysqli_query($mysqli, "SELECT * FROM sites WHERE 
sitenumber=$sitenumber");

while($res = mysqli_fetch_array($result))
{
$sitenumber = $res['sitenumber'];
$videolink = $res['videolink'];
$daynight = $res['daynight'];
$maxtents = $res['maxtents'];
$maxpersons = $res['maxpersons'];
$geography = $res['geography'];
$view = $res['view'];
$forestcover = $res['forestcover'];
$waterfront = $res['waterfront'];
$firepit = $res['firepit'];
$description = $res['description'];
$reslink = $res['reslink'];
}
            echo mysqli_error($mysqli);
?>
<html>
<head>    
<title>Edit Data</title>
</head>

<body>
<a href="index.php">Home</a>
<br/><br/>

<form name="form1" method="post" action="edit.php">
    <table border="0">
    <tr> 
            <td>Site Number</td>
            <td><input type="number" name="sitenumber" value="<?php echo 
$sitenumber;?>"></td>
        </tr>
        <tr> 
            <td>YouTube Link</td>
            <td><input type="url" name="videolink" value="<?php echo 
$videolink;?>"></td>
        </tr>
        <tr> 
            <td>Day or Overnight</td>
            <td><select name="daynight" value="<?php echo $daynight;?>">
            <option value="Day">Day</option>
            <option value="Overnight">Overnight</option></td>

        </tr>
                    <tr> 
            <td>Maximum Tents</td>
            <td><input type="number" name="maxtents" value="<?php echo 
$maxtents;?>"></td>
        </tr>
                    <tr> 
            <td>Maximum Persons</td>
            <td><input type="number" name="maxpersons" value="<?php echo 
$maxpersons;?>"></td>
        </tr>
                    <tr> 
            <td>Geography</td>
            <td><input type="text" name="geography" value="<?php echo 
$geography;?>"></td>
        </tr>
                    <tr> 
            <td>View</td>
            <td><input type="text" name="view" value="<?php echo $view;?>"> 
 </td>
        </tr>
                    <tr> 
            <td>Forest Cover</td>
            <td><input type="text" name="forestcover" value="<?php echo 
  $forestcover;?>"></td>
        </tr
                    <tr> 
            <td>Waterfront Access</td>
            <td><select name="waterfront" value="<?php echo $waterfront;?>">
            <option value="Yes">Yes</option>
            <option value="No">No</option></td>
        </tr>
                    <tr> 
            <td>Firepit Availability</td>
            <td><select name="firepit" value="<?php echo $firepit;?>">
            <option value="Yes">Yes</option>
            <option value="No">No</option></td>
        </tr>
                    <tr> 
            <td>Site Description</td>
            <td><input type="text" name="description" value="<?php echo 
$description;?>"></td>
        </tr>
                    <tr> 
            <td>Reservation Link</td>
           <td><input type="url" name="reslink" value="<?php echo $reslink;? 
>"></td>
        </tr>
            <td><input type="hidden" name="site" value="<?php echo 
$_GET['site'];?>"></td>
            <td><input type="submit" name="update" value="Update"></td>
        </tr>
    </table>
</form>
</body>
</html>

很抱歉这里的代码太长,但我觉得有必要在这里看到完整的上下文。
变量也有一个中断。sitenumber变量没有更新,之后的每个变量都会出现此错误。。。
注意:未定义的变量:c:\wamp\www\code\edit.php中的videolink,第124行
所以,这是一个双管齐下的问题。我们将不胜感激。

uyhoqukh

uyhoqukh1#

更正此问题:

$result = mysqli_query($mysqli, "SELECT * FROM sites WHERE sitenumber='".$sitenumber."' ");

还有这个:

$result = mysqli_query($mysqli, "UPDATE sites SET 
sitenumber='$sitenumber',videolink='$videolink',daynight='$daynight',
maxtents='$maxtents',maxpersons='$maxpersons',geography='$geography', 
view='$view',forestcover='$forestcover',waterfront='$waterfront', 
firepit='$firepit',description='$description',reslink='$reslink' WHERE 
sitenumber='$sitenumber'");
oyxsuwqo

oyxsuwqo2#

sql查询看起来不错,但问题可能来自变量的值。
由于您的查询没有正确转义(这应该是为了更好的安全性),我建议您在执行查询之前调试查询。通过这种方式,您将能够理解将在数据库中执行什么。
如果不使用xdebug,只需将查询放入变量中,然后使用 var_dump .
然后,打开phpmyadmin(我假设您至少有权访问它),并将变量的值(即您的查询)粘贴到sql编辑器中。然后执行它,就会有一条消息解释错误在哪里。它将帮助您了解为什么使用prepared语句很重要,因为它可以看到哪个变量的值是错误的(这意味着它包含一个 ' 或者 " ,例如)。
我希望这会有帮助

相关问题