|
|
| Автор |
Сообщение |
abaZ Новичок

Возраст: 25
Зарегистрирован: 01.07.2006
Сообщения: 9
Откуда: Nal'chik
|
Добавлено: Ср Ноя 08, 2006 9:38 pm Заголовок сообщения: Вставка записи в MySQL |
|
|
Имеется такой код
[code:1:72f8f8b229]<?php
require "dbcon.php";
global $id_author;
if(isset($_POST['familia'],$_POST['imya']))
{
$query="insert into chitateli values('','".$_POST['familia']."','".$_POST['imya']."','','','')";
if(mysql_query($query))
{
echo "Success";
}
else
{
echo mysql_error();
}
}
?>[/code:1:72f8f8b229]
Он по идее должен добавить 2 записи в таблицу, но говорит что значение '' недопустимо для автоинкриментного поля. Разве первичный ключ в таблице при вставке новых значений не должен сразу увеличиться??  |
|
| Вернуться к началу |
|
 |
KOT!K Знакомый

Возраст: 26
Зарегистрирован: 07.06.2006
Сообщения: 88
|
Добавлено: Чт Ноя 09, 2006 3:10 am Заголовок сообщения: Re: Вставка записи в MySQL |
|
|
abaZ, не знаю структуры вашей таблицы chitateli, но у меня такое ощущение, что вы автоинкриментному полю присваиваете пустое значение, если это так, то попробуйте немного изменить код, типа:
[code:1:34915c5453]$1=''; $2=''; $3='';
$query = sprintf ("INSERT INTO chitateli (familia, imya, pole1, pole2, pole3) VALUES (%s, %s, %s, %s, %s)", $_POST['familia'], $_POST['imya'], $1, $2, $3);
[/code:1:34915c5453] |
|
| Вернуться к началу |
|
 |
abaZ Новичок

Возраст: 25
Зарегистрирован: 01.07.2006
Сообщения: 9
Откуда: Nal'chik
|
Добавлено: Сб Ноя 11, 2006 5:03 pm Заголовок сообщения: |
|
|
| Благодарю за помощь, но пока все без изменений ... буду думать дальше ) |
|
| Вернуться к началу |
|
 |
Денис Модератор

Возраст: 36
Зарегистрирован: 21.08.2004
Сообщения: 1490
Откуда: Санкт-Петербург
|
Добавлено: Сб Ноя 11, 2006 9:14 pm Заголовок сообщения: |
|
|
| abaZ, приведите структуру таблицы |
|
| Вернуться к началу |
|
 |
OldFornit Модератор

Возраст: 30
Зарегистрирован: 12.05.2005
Сообщения: 846
|
Добавлено: Вс Ноя 12, 2006 10:33 am Заголовок сообщения: |
|
|
| гм. А разве строковые вставки не надо экранировать апострофами? |
|
| Вернуться к началу |
|
 |
abaZ Новичок

Возраст: 25
Зарегистрирован: 01.07.2006
Сообщения: 9
Откуда: Nal'chik
|
Добавлено: Сб Ноя 18, 2006 2:32 pm Заголовок сообщения: |
|
|
Прошу прощения что заставил ждать, вот структура таблицы читателей, для ее создания была использована программа "SQL yog":
[code:1:93d60d24c9]Field Type Key Extra
-------------------------------------------------------------
id_bilet | tinyint(5) | PK | auto_increment
| unsigned
-------------------------------------------------------------
familia | varchar(15)
-------------------------------------------------------------
imya | varchar(15)
-------------------------------------------------------------
otchestvo | varchar(15)
-------------------------------------------------------------
adres | varchar(50)
-------------------------------------------------------------
telefon | varchar(30)[/code:1:93d60d24c9]
Прошу помочь со вставкой значений в БД из HTML - формы |
|
| Вернуться к началу |
|
 |
OldFornit Модератор

Возраст: 30
Зарегистрирован: 12.05.2005
Сообщения: 846
|
Добавлено: Пн Ноя 20, 2006 3:25 pm Заголовок сообщения: |
|
|
еще раз повторяюсь - строковые переменные необходимо экранировать апострофами.
что-то этом духе
$db->beginTransaction();
$q = "INSERT INTO \"journal\".\"records\"date\",\"time\",\"from\",\"who\",\"for\",\"tel\",\"message\") VALUES ('$date','$time','$from','$who','$for','$tel','$message');";
$db->exec("set datestyle=DMY;"); |
|
| Вернуться к началу |
|
 |
Денис Модератор

Возраст: 36
Зарегистрирован: 21.08.2004
Сообщения: 1490
Откуда: Санкт-Петербург
|
Добавлено: Вт Ноя 21, 2006 6:45 pm Заголовок сообщения: |
|
|
| OldFornit, да ведь у abaZ`a, вроде бы, все заэкранировано... |
|
| Вернуться к началу |
|
 |
abaZ Новичок

Возраст: 25
Зарегистрирован: 01.07.2006
Сообщения: 9
Откуда: Nal'chik
|
Добавлено: Сб Ноя 25, 2006 11:48 am Заголовок сообщения: |
|
|
Вот-вот:
[code:1:ac6ec6c524]$query="insert into chitateli values('','".$_POST['familia']."','".$_POST['imya']."','','','')";[/code:1:ac6ec6c524]
Или может кто-нибудь скинет ссылку, где есть скрипты для размещения данных в БД? Буду очень признателен .[/code] |
|
| Вернуться к началу |
|
 |
Денис Модератор

Возраст: 36
Зарегистрирован: 21.08.2004
Сообщения: 1490
Откуда: Санкт-Петербург
|
Добавлено: Сб Ноя 25, 2006 12:37 pm Заголовок сообщения: |
|
|
| abaZ нет никаких спецскриптов, размещающих записи в БД. Для этого существуют запросы. Попробуйте задать свой вопрос на http://www.mysql.ru. Только уговор: если там помогут - напишите здесь решение проблемы. Хотя я на 100% уверен, что глюк у Вас с самой таблицей. Кстати, попробуйте увеличить значение для поля id_bilet до 11... |
|
| Вернуться к началу |
|
 |
abaZ Новичок

Возраст: 25
Зарегистрирован: 01.07.2006
Сообщения: 9
Откуда: Nal'chik
|
Добавлено: Вс Ноя 26, 2006 9:17 pm Заголовок сообщения: |
|
|
Оk, буду докапываться до истины  |
|
| Вернуться к началу |
|
 |
OldFornit Модератор

Возраст: 30
Зарегистрирован: 12.05.2005
Сообщения: 846
|
Добавлено: Вт Ноя 28, 2006 9:59 am Заголовок сообщения: |
|
|
вот вот. Повнимательнее посмотрите на запрос.
Какого, извините за выражение, фига, Вы пробуете полю id_bilet присвоить значение ""?
Если поле автоинкрементное - то ничего ему и не приписывайте.
ИМХО - налицо лень написать запрос посложнее, с ЯВНЫМ указанием - каким полям что присваиваем. |
|
| Вернуться к началу |
|
 |
Денис Модератор

Возраст: 36
Зарегистрирован: 21.08.2004
Сообщения: 1490
Откуда: Санкт-Петербург
|
Добавлено: Вт Ноя 28, 2006 8:29 pm Заголовок сообщения: |
|
|
| OldFornit писал(а): | | Какого, извините за выражение, фига, Вы пробуете полю id_bilet присвоить значение ""? |
По-моему ты малость перегнул... Автоинкрементному полю в этом случае не присаивается никакого значения, при этом MySQL сам увеличивает значение поля на единицу. Такая запись служит для указания очередности полей и значений при неявном их указании. Конечно, при явном указании полей и значений этот вариант можно пропустить. |
|
| Вернуться к началу |
|
 |
OldFornit Модератор

Возраст: 30
Зарегистрирован: 12.05.2005
Сообщения: 846
|
Добавлено: Вт Ноя 28, 2006 9:53 pm Заголовок сообщения: |
|
|
Денис, насколько я помню документацию и вообще основы работы с сикулом:
'' - это не присвоение никакого значения.
Это присвоения либо NULL, либо пустой строки. |
|
| Вернуться к началу |
|
 |
Денис Модератор

Возраст: 36
Зарегистрирован: 21.08.2004
Сообщения: 1490
Откуда: Санкт-Петербург
|
Добавлено: Ср Ноя 29, 2006 5:16 pm Заголовок сообщения: |
|
|
| OldFornit на самом деле я сам так делаю, но у меня все работает... |
|
| Вернуться к началу |
|
 |
|