首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的php页面上有一个SQL语法错误。

我的php页面上有一个SQL语法错误。
EN

Stack Overflow用户
提问于 2012-12-26 21:18:34
回答 4查看 132关注 0票数 0

下面是mysql插入在php中运行的I。我已经删除了给出错误的部分,但是在下一篇文章中我得到了一个错误。我看不出是什么不同的原因造成了错误。

代码语言:javascript
复制
$fields="adv_exchange SET synum='".$synum."', worknum='".$_POST['worknum']."', user_id='".$current_user->ID."', f_name='".$current_user->user_firstname."', l_name='".$current_user->user_lastname."', email='".$current_user->user_email."', regnum=".$_POST['regnum'].", item='".$item."', qsver='".$_POST['qsver']."', flashrom='".$_POST['flashrom']."',expansion='".$_POST['board']."', rdisplay='". $_POST['rdisplay']."', screen_model='".$_POST['screen_model']."', p_hardware='".$_POST['cable']."', pcolor='".$_POST['pcolor']."', pname='".$_POST['pname']."', kboard='".$_POST['kboard']."', ip='".$_POST['ip']."', reg_name='".$_POST['reg_name']."', mem=".$_POST['mem'].", dt_server='".$_POST['dt_server']."', alert='".$_POST['alert']."', ows='".$_POST['ows']."', w_date='".$_POST['w_date']."', flashromver='".$_POST['flashromver']."', s_size='".$_POST['s_size']."', mag='".$_POST['mag']."', rcard='".$_POST['rcard']."', kvsid=".$_POST['kvsid'].", finger='".$_POST['finger']."', stand_alone='".$_POST['stand_alone']."', standards='".$_POST['standards']."', profile='".$_POST['profile']."', man_date='".$_POST['man_date']."', l_sn='".$_POST['l_sn']."', misc='".$_POST['misc']."', problem='".$_POST['problem']."'";

然后$query =“插入到$fields中”;

我得到了回报

您的SQL语法有错误;请检查与您的MySQL服务器版本对应的手册,以获得在第1行区块引号附近使用“item=‘JS900CV”、qsver='’、flashrom='‘、expansion='’、rdisplay='‘、screen_model=’的正确语法。

如果我回过了$query,我就会得到这样的结果:

插入到adv_exchange SET synum='SY5135',worknum='123456',user_id='2',f_name=‘删除’,l_name=‘已删除’,regnum=,item='JS900CV',qsver=‘,flashrom='',扩展=’‘,rdisplay=’,screen_model=‘,p_hardware=’,pcolor=‘,pname=’,kboard='',ip='192.168.1.16',reg_name=‘,mem=,dt_server=’,警告‘,ows=’,w_date‘’,‘qsver=’,s_size='',mag='',rcard='',kvsid=3,finger='',独立自主,标准=‘’,配置文件=‘’,man_date='',l_sn='',misc='misc test\r\n',问题=‘gen test’

根据我在语句中输入的内容,错误正在更改语句中的点。并非所有字段都被使用,表单是动态的,它提供数据,因此字段取决于选择了哪些选项。另外,在考虑使用$_POST直接插入mysql时,我首先对数组进行净化。任何帮助都将不胜感激。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-12-26 21:23:14

您正在使用一种非常非常糟糕的方法来处理MySQL数据库:手动创建查询。您确实应该使用预先准备好的语句:这个问题也将得到解决。

不要使用mysql_*函数,而是使用PDO

您的代码看起来如下(简化):

代码语言:javascript
复制
// This holds the query
$statement = $pdo->prepare('INSERT INTO adv_exchange SET synum=?, worknum=?, etc=?, problem=?');

// This executes it with the given arguments. It's 100% injection-proof and safe. In fact, it's also faster.
$statement->execute(array($synum, $_POST['worknum'], $_POST['therest'], $_POST['problem']));
票数 3
EN

Stack Overflow用户

发布于 2012-12-26 21:21:31

看看regnum=,。您没有为regnum提供一个值。要么将其完全删除,要么将其设置为适当的值。

票数 4
EN

Stack Overflow用户

发布于 2012-12-26 21:24:08

Regnum=“,$_POST‘’regnum‘。是造成问题的原因。当它未定义时,将在SQL查询中获得regnum=。

更重要的是,你并没有逃避你的投入。或者在它们周围使用mysql_real_escape_string,或者更好地使用准备好的语句。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14046387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档