通过 php 编辑 mysql 内容时出现一些错误

some error with editing mysql content via php

我有一些问题

我完成了我的项目,但其中有问题

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 'blink = 'asd' WHERE bid='1'' at line 6 in editing file for edit my book content

    <?php
include("../includes/config.php");
$cuser = mysql_query("SELECT * FROM books");
$id = intval($_GET['id']);
$bname = strip_tags($_POST['bname']);
$bpic = strip_tags($_POST['bpic']);
$bdesc = strip_tags($_POST['bdesc']);
$bauthor = strip_tags($_POST['bauthor']);
$blink = strip_tags($_POST['blink']);
if(isset($_GET['edit'])){
    $cuuser = mysql_fetch_object($cuser);
    echo "<form action='editbook.php?edit=yes&id=".$cuuser->bid."' method='POST'>
    <table>
    <tr>
    <td>bname : </td>
    <td><input name='bname' type='text' value='".$cuuser->bname."' /></td>
    </tr>
    <tr>
    <td>bpic : </td>
    <td><input name='bpic' type='text' value='".$cuuser->bpic."' /></td>
    </tr>
    <tr>
    <td>bdesc : </td>
    <td><input name='bdesc' type='text' value='".$cuuser->bdesc."' /></td>
    </tr>
    <tr>
    <td>blink : </td>
    <td><input name='blink' type='text' value='".$cuuser->blink."' /></td>
    </tr>
    <tr>
    <td>bauthor : </td>
    <td><input name='bauthor' type='text' value='".$cuuser->bauthor."' /></td>
    </tr>
    <td><input name='do' type='submit' value='GO' /></td>
    </table>
    </form>";
}
        if($_REQUEST['edit'] == 'yes'){
            $uuser = mysql_query("UPDATE books SET 
            bname = '$bname',
            bpic = '$bpic',
            bdesc = '$bdesc',
            bauthor = '$bauthor'
            blink = '$blink'
            WHERE bid='$id' ") or die(mysql_error()) ;
            if(isset($uuser)){
                echo "done";
            }
        }

?>

当我从查询中删除 (blink = '$blink') 时,它会保存并编辑 但我的项目需要它 注意:我多次更改闪烁并尝试其他名称(同样的问题)

如果有其他方法可以通过 php 编辑 mysql 内容,我会很高兴 :) 任何让我的项目正常工作的东西

谢谢:)

首先,您在 bauthorblink 行之后的更新语句中省略了逗号。

其次,我看到你没有对输入数据做任何处理。 SQL 注入非常脆弱。 此外,如果有人在输入数据中键入引号 ',您的保存查询也会失败。 因此,您也应该为此目的进行修复。 只需为每个输入应用 mysql_real_escape_string 函数,就可以避免保存包含逗号的字符串数据的失败。

因此请尝试使用以下代码进行快速修复:

if($_REQUEST['edit'] == 'yes'){
            $uuser = mysql_query("UPDATE books SET 
            bname = '" . mysql_real_escape_string($bname) . "',
            bpic = '" . mysql_real_escape_string($bpic) . "',
            bdesc = '" . mysql_real_escape_string($bdesc) . "',
            bauthor = '" . mysql_real_escape_string($bauthor) . "',
            blink = '" . mysql_real_escape_string($blink) . "' 
            WHERE bid='$id' ") or die(mysql_error()) ;
            if(isset($uuser)){
                echo "done";
            }
        }

为了更好的安全选项,您可以尝试使用准备好的语句PDO