我在更新包含HTML数据的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 'desc='Live updates to certain games will also be posted on this website througho' at line 1
我已经进行了将近3天的Stack Overflow清理工作,但没有任何明确的答案。所以我希望有人能找到这个!
这是我的PHP表单代码:
if (isset($_POST['submit'])) { $WName = mysql_prep($_POST['wname']); $SName = mysql_prep($_POST['sname']); $Desc = mysql_prep($_POST['desc']); $LogoURL = mysql_prep($_POST['logourl']); $aboutPage = mysql_prep($_POST['aboutpage']); $query = "UPDATE settings SET name='$WName',subName='$SName',desc='$Desc',logoUrl='$LogoURL',about='$aboutPage'"; // $query = mysql_prep($query); mysql_query($query) or die(mysql_error()); header("Location: settings.php?=success"); }
功能
mysql_prep()
可以在互联网上找到,也就是在这里:https : //gist.github.com/ZachMoreno/1504031
这是HTML表单:
<form role="form" action="" method="post"> <!-- text input --> <div class="form-group"> <label>Website Name</label> <input type="text" name="wname" class="form-control" placeholder=" <?php echo $row['name']; ?>" value=" <?php echo $row['name']; ?>" /> </div> <div class="form-group"> <label>Sub Name</label> <input type="text" name="sname" class="form-control" placeholder=" <?php echo $row['subName']; ?>" value=" <?php echo $row['subName']; ?>" /> </div> <div class="form-group"> <label>Description</label> <textarea name="desc" class="form-control" rows="3" placeholder=" <?php echo $row['desc']; ?>" > <?php echo $row['desc']; ?> </textarea> </div> <div class="form-group"> <label>Logo URL</label> <input type="text" name="logourl" class="form-control" placeholder=" <?php echo $row['logoUrl']; ?>" value=" <?php echo $row['logoUrl']; ?>" /> </div> <div class="form-group"> <label>About Page</label> <textarea class="form-control" name="aboutpage" rows="6" placeholder=" <?php echo $row['about']; ?>"> <?php echo $row['about']; ?> </textarea> </div> <div class="box-footer"> <input type="submit" name="submit" class="btn btn-primary" value="Submit" style="margin-left:-10px;" /> </div> </form>
非常感谢您能提供的任何帮助,希望能解决这个问题,我的目的是帮助遇到相同/相似问题的未来访客。
简直不敢相信我之前没有看到这个。我在MySQL上遇到的问题是数据库的列名为“ desc”,我最初的想法是它的意思是“描述”,但实际上它与关键字“ descending”冲突。这产生了语法错误。
这是我在MySQL文档中找到的内容。9.3关键字和保留字 :
关键字是在SQL中具有重要意义的单词。某些关键字(例如SELECT,DELETE或BIGINT)已保留,并且需要特殊处理才能用作表名和列名之类的标识符。内置函数的名称也可能如此。
在上面的该Web链接上,您可以看到不应该使用或应包含反斜杠的关键字/保留字的列表(我将不赘述)。
我的解决方案? 不要使用保留字作为标识符!
您可以做的最简单的解决方案就是避免使用这些单词。我通过将标识符更改为“描述”来防止使用保留词“ desc”。
感谢你的帮助!希望这对以后的人们有所帮助。