2014-01-21 4 views
0

Мне нужна серьезная помощь в моем заявлении sql. Во-первых, по какой-то причине значения по умолчанию для bio и user_image не вставляются. Во-вторых, мое заявление работает и выключается. Иногда он вставляет, иногда это не так. Мне нужна помощь умного человека. Заранее спасибо. Heres мой код:Вставить строку Mysql со значениями по умолчанию

$query = "INSERT INTO users VALUES ('{$_POST['display_name']}', '{$_POST['email']}','{$_POST['password']}','active','{$_POST['first_name']}','{$_POST['last_name']}',DEFAULT,DEFAULT)"; 
mysql_query($query); 

echo '<META HTTP-EQUIV="Refresh" Content="0; URL=success.php">';  
    exit; 

Перепутано. Я знаю, что я делаю этот проект, чтобы узнать больше о базах данных. Heres моя дб структура:

Field  Type       Null  Default 
id   int(11)      No  
username varchar(255)     No  
email  varchar(255)     No  
password varchar(255)     No  
status  enum('active', 'inactive') No  
first_name text      No  
last_name text      No  
bio   varchar(305)    No   HEY! theres nothing here yet ....Complete your bio if you want to get rid of this lame placeholder text. Use this space on your page to tell the internet a little bit about yourself. Or just make everyone feel bad by listing all of your amazing accomplishments! I prefer the latter.  
user_image varchar(305)    No   user_profile.jpg 

** Изменил, но до сих пор не работает:

$query = "INSERT INTO users(username, email, password, first_name,last_name) 
VALUES ({$_POST['display_name']}, {$_POST['email']}, {$_POST['password']}, {$_POST['first_name']}, {$_POST['last_name']})"; 
+3

У вас отсутствует значение для поля 'id'. И посмотрите 'mysql_error();' почему ваш запрос выходит из строя. –

+0

@Glavic Не будет ли идентификатор автоматически увеличиваться? –

+0

@SharikovVladislav: по информации, которую он дал, мы не знаем. Но это не имеет значения, он должен указывать значения для всех полей, когда он использует INSERT без указания полей. Если поле 'id' автоматически увеличивается, тогда ему нужно использовать значение« null »в качестве значения. –

ответ

0

Во-первых, попробуйте следующее:

$query = "INSERT INTO users VALUES ('{$_POST['display_name']}', '{$_POST['email']}','{$_POST['password']}','active','{$_POST['first_name']}','{$_POST['last_name']}',null,null)"; 

Если это не помогло бы попытаться указать, какие поля вам хотите вставить. Во всяком случае, это хорошая практика. Это не очень сложно, но есть меньше возможности получить ошибку.

Я имею в виду, вы должны попробовать следующий запрос:

insert into SomeTable(Field1, Field2, Field5, Field8) values ($field1Data, $field2Data, $field5Data, $field8Data); 

Field3, Field4, Field6, Field7 будет по умолчанию после этого.

1

Ваш запрос в основном небезопасен - его можно использовать для вставки вредоносных заявлений и POOF! вся ваша база данных исчезла. Вам действительно нужно прочитать this SO thread и вместо этого использовать PDO или mysqli, или если это абсолютно не вариант, по крайней мере, используйте mysql_real_escape_string.

Сказав это, поскольку вы не выполняете никаких экранов, любая строка с ' в ней нарушит ваш запрос. Предположим, что $_POST['display_name'] установлено на Frank's Restaurant. Затем ваш запрос начнется с INSERT INTO users VALUES ('Frank's Restaurant', и MySQL будет думать, что запрос был прерван после Frank, так как за ним следует '.

Кроме того, как предположил Главич, вам нужно добавить поле для идентификатора или указать поля вручную.

Смежные вопросы