无法将SQL插入一个特定的表

时间:2011-07-04 15:26:39

标签: php sql insert phpmyadmin

所以我在过去的三个小时里一直试图将sql插入到这个特定的表中,我想我开始疯了。 我认为可能是问题的孤立事物,但如果您想要更多信息,请随时提出

基本上我目前有两个sql表:conceptsFUideas(我真的很沮丧)存储在同一个数据库中。当我运行以下代码时:

$con = mysql_connect('localhost', 'username', 'password');
mysql_select_db("my_db", $con);
$sql = "INSERT INTO `concepts` (description) VALUES ('HAI THAR')";
mysql_query($sql,$con);

它在概念中插入一行,但是当我运行此代码时:

$con = mysql_connect('localhost', 'username', 'password');
mysql_select_db("my_db", $con);
$sql = "INSERT INTO `FUideas` (description) VALUES ('HAI THAR')";
mysql_query($sql,$con);

它什么都不做。 只是为了进一步弄乱你的头脑:如果你在phpMyAdmin标签中执行它:

INSERT INTO `FUideas` (description) VALUES ('HAI THAR')

它有效!?!?!

请任何想法,代码,HACKS?我很沮丧! 如果您有任何预感或线索告诉我,我会尝试并报告结果

修改

PHP Myadmin如何创建表的转储:

-- phpMyAdmin SQL Dump
-- version 3.3.9
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Jul 04, 2011 at 11:21 AM
-- Server version: 5.0.91
-- PHP Version: 5.2.9

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;


CREATE TABLE concepts (
  id int(10) unsigned NOT NULL auto_increment,
  title tinytext NOT NULL,
  `user` tinytext NOT NULL,
  `date` int(10) unsigned NOT NULL default '0',
  summary tinytext NOT NULL,
  description text NOT NULL,
  tags tinytext NOT NULL,
  ip tinytext NOT NULL,
  appreciates tinyint(3) unsigned NOT NULL default '4',
  PRIMARY KEY  (id)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1;

-- phpMyAdmin SQL Dump
-- version 3.3.9
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Jul 04, 2011 at 11:23 AM
-- Server version: 5.0.91
-- PHP Version: 5.2.9

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Table structure for table 'FUideas'
--

CREATE TABLE FUideas (
  id int(10) unsigned NOT NULL auto_increment,
  `user` tinytext NOT NULL,
  `date` int(10) unsigned NOT NULL default '0',
  description text NOT NULL,
  upvotes text NOT NULL,
  downvotes text NOT NULL,
  appreciated tinyint(3) unsigned NOT NULL default '0',
  ip tinytext NOT NULL,
  PRIMARY KEY  (id)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1;

最终更新

对于其他任何看过这个问题的人来说,事实证明我在同一时间运行旧代码会导致错误和不一致。

6 个答案:

答案 0 :(得分:2)

试试这个:

mysql_query($sql,$con) or die(mysql_error());

如果查询出现问题(语法错误或密钥违规等等),则die()调用将吐出描述问题的错误消息。

答案 1 :(得分:1)

尝试

$sql = "INSERT INTO `FUideas` (`description`) VALUES ('HAI THAR')";

如果这不起作用,那么我问你在SQL中创建表格,如何引用userdate,但其他字段不是?

答案 2 :(得分:1)

由于它作为管理员工作,我的猜测是你在连接中使用的用户名没有FUIdeas表的插入权限。

答案 3 :(得分:1)

我不太确定,但描述可能会保留,请尝试..

$con = mysql_connect('localhost', 'username', 'password');
mysql_select_db("my_db", $con);
$sql = "INSERT INTO `FUideas` (`description`) VALUES ('HAI THAR')";
mysql_query($sql,$con) or die(mysql_error());

我想这对第一个工作有意义......

对于两个实例,

my_db是否相同?

答案 4 :(得分:1)

你能看到SQL错误吗?我看不到你的第一个查询是如何工作的,因为你有一堆没有DEFAULT值的非空列。

答案 5 :(得分:0)

您正在尝试插入单个值:

  

$ sql =“INSERT INTO concepts   (描述)VALUES('HAI THAR')“;

虽然您的表中有许多字段作为NOT NULL。您必须使用一个insert语句填充至少所有必填字段。 顺便说一下,如果你传递的DDL是真的,那么你的第一个“工作”表达式也行不通。