2017-08-13 98 views
0

我正在创建一个小项目来解释我的学生如何使用PHP代码更新SQL数据库中的值。我在MySQL中创建了所有字段为VARCHAR的表。我写了以下代码,其中引发以下错误: 更新值时出错您的SQL语法中有错误;请检查与您的MySQL服务器版本相对应的手册,以便在第1行的'Mbps WHERE dsl ='25610669'附近使用正确的语法,其中25610669是数据库中的现有记录。下面是代码:错误更新值

<?php 
    if((isset($_POST['B2']))) 
    { 
    $server = 'localhost' ; 
     $un = 'root' ; 
     $pass = 'icsk' ; 
     $db = 'yusuf' ; 
    $conn = mysqli_connect($server, $un, $pass, $db); 
    $update = "UPDATE homereg SET Fname = {$_POST['First']}, Lname = {$_POST['Last']}, cid = {$_POST['cid']}, pack = {$_POST['choice']} WHERE dsl = {$_POST['dsl']}" ; 
    $result = mysqli_query($conn, $update); 
    if($result == 1) 
     { 
     echo "Successfully Updated" ; 
     } 
    else 
     { 
     echo "Error in Updting value" . mysqli_error($conn) ; 
     } 
    } 

    ?> 
    <html> 
    <head> 
    <title>Update User Information</title> 
    </head> 
    <body background="HomePageMap.gif"> 
    <CENTER><B><FONT COLOR = 'RED'>SEARCH & UPDATE THE EXISTING RECORD HERE </FONT></B></CENTER><P> 
    <form method="POST" action="modify.php" name = "frm"> 
     <div align="center"> 
      <table border="1" width="314"> 
       <tr> 
        <td width="130"><b>DSL Number</b></td> 
        <td width="168"><input type="text" name="dsl" size="20"></td> 
       </tr> 
       <tr> 
        <td width="130"><b>First Name</b></td> 
        <td width="168"><input type="text" name="First" size="20"></td> 
       </tr> 
       <tr> 
        <td width="130"><b>Last Name</b></td> 
        <td width="168"><input type="text" name="Last" size="20"></td> 
       </tr> 
       <tr> 
        <td width="130"><b>Civil ID</b></td> 
        <td width="168"><input type="text" name="cid" size="20"></td> 
       </tr> 
       <tr> 
        <td width="130"><b>Net Pack</b></td> 
        <td width="168"><select size="1" name="choice"> 
        <option value = "2 Mbps">2 Mbps</option> 
        <option value = "5 Mbps">5 Mbps</option> 
        <option value = "10 Mbps">10 Mbps</option> 
        <option value = "15 Mbps">15 Mbps</option> 
        </select></td> 
       </tr> 
      </table> 
     </div> 
     <p align="center"><input type="submit" value="Search" name="B1">&nbsp;&nbsp; 
     <p align="center"><input type="submit" value="Modify" name="B2">&nbsp;&nbsp; 
     <input type="reset" value="Reset" name="B2"></p> 
    </form> 
    <p align="center">&nbsp;</p> 
    </body> 

    </html> 

回答

0

如果我下面的回答不行,试试这个:

$update = "UPDATE homereg SET Fname = `$_POST['First']}`, Lname = `$_POST['Last']`, cid = `$_POST['cid']`, pack = `$_POST['choice']` WHERE dsl = `$_POST['dsl']`" ; 
+0

非常感谢你Luki Centuri。这工作。我忘了用单引号括住字符串值。再次感谢! – YusufSM

+0

不客气:) –

0

你必须把字串,报价是这样的:

$update = "UPDATE homereg SET Fname = '{$_POST['First']}', Lname = '{$_POST['Last']}', cid = '{$_POST['cid']}', pack = '{$_POST['choice']}' WHERE dsl = '{$_POST['dsl']}'" ; 

而且,不知道如果你离开它,因为它只是一个例子,但你要逃避你的POST值,以防止SQL注入,像这样:

$first = mysqli_real_escape_string($conn, $_POST['First']);