Невозможно вставить SQL в одну конкретную таблицу - PullRequest
2 голосов
/ 04 июля 2011

Итак, я пытался вставить sql в эту конкретную таблицу в течение последних трех часов, и я думаю, что начинаю сходить с ума. У меня есть отдельные вещи, которые, я думаю, могут быть проблемой, хотя, если вы хотите больше информации, не стесняйтесь спрашивать

По сути, у меня в настоящее время есть две таблицы sql: concepts и FUideas (Я был очень разочарован этим), которые хранятся в той же базе данных.Когда я запускаю следующий код:

$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')

, это работает!?!?!

ПОЖАЛУЙСТА, ЛЮБЫЕ ИДЕИ, КОД, ХАКИ?Я в отчаянии! Если у вас есть какие-то догадки или подсказки, скажите мне, и я попробую это и сообщу с результатами

РЕДАКТИРОВАТЬ

PHP Myadmin dump ofкак создавать таблицы:

-- 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 ]

2 голосов
/ 04 июля 2011

Попробуйте это:

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

Если есть проблема с запросом (синтаксическая ошибка или нарушение ключа и т. Д.), То вызов die () выдаст сообщение об ошибке, описывающее проблему.

1 голос
/ 04 июля 2011

Вы видите ошибку SQL? Я не вижу, как работает ваш первый запрос, так как у вас есть куча ненулевых столбцов без значений DEFAULT.

1 голос
/ 04 июля 2011

Я не совсем уверен, но описание может быть зарезервировано, попробуйте ..

$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 одинаково для обоих экземпляров?

1 голос
/ 04 июля 2011

Поскольку он работает как администратор, я предполагаю, что имя пользователя, которое вы используете в соединении, не имеет прав на вставку над таблицей FUIdeas.

1 голос
/ 04 июля 2011

Попробуйте

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

Если это не сработает, то я спрашиваю, в вашем SQL для создания таблицы, почему user и date заключены в кавычки, а другие поля нет

0 голосов
/ 04 июля 2011

Вы пытаетесь вставить одно значение:

$ sql = "INSERT INTO concepts (описание) VALUES ('HAI THAR') ";

В то время как у вас есть много полей рынка как NOT NULL в вашей таблице. Вы должны заполнить как минимум ALL обязательные поля одним оператором вставки. Кстати, ваше первое «рабочее» выражение может не сработать, даже если переданный вами DDL действителен.

...