通过 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 内容,我会很高兴 :) 任何让我的项目正常工作的东西
谢谢:)
首先,您在 bauthor
和 blink
行之后的更新语句中省略了逗号。
其次,我看到你没有对输入数据做任何处理。 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。
我有一些问题
我完成了我的项目,但其中有问题
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 内容,我会很高兴 :) 任何让我的项目正常工作的东西
谢谢:)
首先,您在 bauthor
和 blink
行之后的更新语句中省略了逗号。
其次,我看到你没有对输入数据做任何处理。 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。