Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 断断续续地写入数据库只能部分工作_Php_Sql_Database_Insert_Vbulletin - Fatal编程技术网

Php 断断续续地写入数据库只能部分工作

Php 断断续续地写入数据库只能部分工作,php,sql,database,insert,vbulletin,Php,Sql,Database,Insert,Vbulletin,我无法重新创建问题,它似乎只发生在多台机器上的一个人身上 我在想,也许和SQL有关。。我不知道他的ISP是否与此有关?就像我说的,到目前为止,这个问题只发生在一个人身上。。多台机器,多个用户名来测试我的权限代码,这很奇怪 其他100次我都测试过了,都是完美无瑕的。。这是我的部分代码 if($_REQUEST['do'] == 'save_new_vehicle') { $userid = $vbulletin->userinfo['userid']; $username = $vbulle

我无法重新创建问题,它似乎只发生在多台机器上的一个人身上

我在想,也许和SQL有关。。我不知道他的ISP是否与此有关?就像我说的,到目前为止,这个问题只发生在一个人身上。。多台机器,多个用户名来测试我的权限代码,这很奇怪

其他100次我都测试过了,都是完美无瑕的。。这是我的部分代码

if($_REQUEST['do'] == 'save_new_vehicle') {
$userid = $vbulletin->userinfo['userid'];
$username = $vbulletin->userinfo['username'];
$vbulletin->input->clean_array_gpc('p', array(
'year' => TYPE_INT,
'make_model' => TYPE_NOHTML,
'susp_type' => TYPE_NOHTML,
'interior' => TYPE_NOHTML,
'exterior' => TYPE_NOHTML,
'audiovideo' => TYPE_NOHTML,
'wheelstires' => TYPE_NOHTML,
'suspension' => TYPE_NOHTML,
'drivetrain' => TYPE_NOHTML,
'nickname' => TYPE_NOHTML,
));  

$year = $vbulletin->GPC['year'];
$make_model = $vbulletin->GPC['make_model'];
$susp_type = $vbulletin->GPC['susp_type'];
$interior = $vbulletin->GPC['interior'];
$exterior = $vbulletin->GPC['exterior'];
$audio_video = $vbulletin->GPC['audiovideo'];
$wheels_tires = $vbulletin->GPC['wheelstires'];
$suspension = $vbulletin->GPC['suspension'];
$drivetrain = $vbulletin->GPC['drivetrain'];
$nickname = $vbulletin->GPC['nickname'];


$sql = "INSERT INTO ". TABLE_PREFIX ."BAMFG_vehicle (

  userid, 
  username, 
  nickname, 
  year, 
  make_model,
  susp_type,
  exterior,
  interior,
  audio_video,
  drivetrain,
  suspension,
  wheels_tires) VALUES (

  '". $userid ."',
  '". $username ."',
  '". $nickname ."',
  '". $year ."',
  '". $make_model ."',
  '". $susp_type ."',  
  '". $exterior ."',
  '". $interior ."',
  '". $drivetrain ."',
  '". $audio_video ."',
  '". $suspension ."',
  '". $wheels_tires ."')";
$db->query_write($sql);
}
它将写:年,制作模型,悬挂类型,内部,外部和音频视频。。对这家伙来说没有别的了

再一次,我无数次试图在一切正常的情况下重新制造问题,其他人以及一切正常的情况下。我在拔头发

你可以自己尝试一下这个网站,看看我们能否复制结果。。 登录:stackoverflow 密码:密码

在我把所有代码弄清楚之前,没有CSS的一切都是粗糙的。。再次感谢

编辑* 我已将代码更改为:

$year =  mysql_real_escape_string($vbulletin->GPC['year']);
$make_model =  mysql_real_escape_string($vbulletin->GPC['make_model']);
$susp_type =  mysql_real_escape_string($vbulletin->GPC['susp_type']);
$interior =  mysql_real_escape_string($vbulletin->GPC['interior']);
$exterior =  mysql_real_escape_string($vbulletin->GPC['exterior']);
$audio_video =  mysql_real_escape_string($vbulletin->GPC['audiovideo']);
$wheels_tires =  mysql_real_escape_string($vbulletin->GPC['wheelstires']);
$suspension =  mysql_real_escape_string($vbulletin->GPC['suspension']);
$drivetrain =  mysql_real_escape_string($vbulletin->GPC['drivetrain']);
$nickname =  mysql_real_escape_string($vbulletin->GPC['nickname']);

一切对我仍然有效,我将运行更多的测试,看看会发生什么。想法?

不要试图通过查看生成SQL的代码来调试SQL!这段代码执行的最后一个INSERT语句是什么?听起来像是在将值放入查询之前没有正确转义值的问题。这就解释了为什么它适用于大多数人——除了可怜的O'Brien先生。DustyJoe:添加
mysql\u real\u escape\u string
对你没有帮助。您要做的是在开始修复错误之前复制错误。通常情况下,添加撇号会破坏未被替换的MySQL查询,因此这可能是复制它的最佳方式。当然,使用预先准备好的语句是最好的方法,但不幸的是,vbulletin仍然在使用遗留的
mysql.*
函数。这只是我在搜索时发现的。。今晚我要试着打破它。