首页 > 解决方案 > 什么会导致表单的“插入”代码仅在 80% 的时间内保存到数据库中?

问题描述

我最近接管的这个避难所的网站有一个插入数据库的表格。但据报道,它只是将部分提交而不是全部保存到数据库中。我在失败的提交之间找不到任何一致的内容(访问者通过电子邮件发送了他们的信息)。

我尝试过的事情和其他注意事项:

  1. 我认为这可能是一列的字符限制,但我确认它们都是 TEXT 类型,最大提交是 3 个句子。
  2. 我检查了保留字,没有看到任何被使用
  3. 表单有时确实保存得很好。估计大约五分之一的失败。
  4. 我浏览了该网站上的所有其他帖子,都注意到了这个错误,但没有一个被接受的解决方案为我解决了这个问题
  5. 每次我尝试重新提交其中一个失败的提交时,我都可以重新创建错误,但我也可以使用测试值提交我自己的错误,它可以很好地保存到数据库中。
  6. 我研究了列拒绝像撇号这样的特殊字符的可能性,但没有得出任何可靠的结果。在 3 个句子长的几个字段之外提交的数据没有什么独特之处。
  7. 该表单使用下面提到的代码提交到一个 php 文件。它不在表单页面本身上。

这是失败时出现的错误: 添加应用程序时出错:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在附近使用的正确语法

这是我的代码:

$link = mysqli_connect('localhost', 'oursite_main', 'password');
if (!$link)
{
  die('Could not connect to database:' .mysql_error());
}


if (!mysqli_select_db($link, 'oursite_application'))
{
  $output = 'unable to locate the application database.';
  include 'output.html.php';
  exit();
}

$age = implode(', ',$_POST['age']);
  
$sql = "INSERT INTO adoption (name,address,city,phone,email,dog,sex,age,details,setting,home,permission,wkhours,time,family,pets,livestock,ydsize,fencing,livingqtrs,vet,activities,experience,whybc,greatdog, lookingfor,shelter,ifyes,helpfulinfo,status,year) VALUES('$_POST[name]', '$_POST[address]' , '$_POST[city]' , '$_POST[phone]' , '$_POST[email]'  ,'$_POST[dog]' , '$_POST[sex]' , '$age' , '$_POST[details]' , '$_POST[setting]' , '$_POST[home]' , '$_POST[permission]' , '$_POST[wkhours]' , '$_POST[time]' , '$_POST[family]' , '$_POST[pets]' , '$_POST[livestock]' , '$_POST[ydsize]' , '$_POST[fencing]' , '$_POST[livingqtrs]' , '$_POST[vet]' , '$_POST[activities]' , '$_POST[experience]' , '$_POST[whybc]' , '$_POST[greatdog]' , '$_POST[lookingfor]' , '$_POST[shelter]' , '$_POST[ifyes]' , '$_POST[helpfulinfo]' , '$_POST[status]', '$_POST[year]')";

标签: phpmysqldatabasesql-insert

解决方案


推荐阅读