Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > добавление в базу


Автор: Sassoft 24.6.2008, 22:01
создаю скрип пхп чтобы заполнять бд, но чет не прет... кто видет где баг?

Чтобы добавить нового пользователя заполните поля:
Код

<form action='admin.php' method='POST'>
<br><input type='text' nаmе='login" value="Логин'>
<br><input type='text' nаmе='pass' value='Пароль'>
<br><input type='text' nаmе='info' value='Информация'>
<input type='hidden' name='id' value='add'>
<br><input type='submit' value='Добавить'>
</form>

<?php
if ($id=='add') {

// -----------------------------------------------------------------------------------------------
$dbhost=""; // хост
$dbuser=""; // пользователь
$dbpassword = "i"; // пароль 
$dbname=""; // название БД MySQL

// Подключаемся к mysql серверу
$link = mysql_connect($dbhost, $dbuser, $dbpassword);

// Выбираем нашу базу данных
mysql_select_db($dbname, $link);

// -----------------------------------------------------------------------------------------------

// Добавляем запись в нашу таблицу 
// т.е. делаем sql запрос
$query = "insert into sassoft values($login,$pass,$info)";

mysql_query($query, $link);

// Закрываем соединение
mysql_close($link);
echo "Вроде добавлено :)";
 ;}


когда без переменных работаешь добавляет а так нет  smile 



M
MoLeX
Модератор: используй кнопку КОД

Автор: Feldmarschall 24.6.2008, 22:06
http://phpfaq.ru/slashes#mysql
http://phpfaq.ru/globals

И ещё. баг надо не глазами рыскать, а http://forum.vingrad.ru/articles/topic-206796.html
Иначе можно долго искать. И все равно не найти.

Автор: Sassoft 24.6.2008, 22:21
ошибку никакую не выдает, это я насчет статьи 

Автор: Feldmarschall 24.6.2008, 22:27
а что ты сделал, чтобы выдавало?

Автор: topy 25.6.2008, 10:11
Пишите код чтобы работал с register_globals=off; изначально, чтобы не было мучительно больно потом.

Автор: gta4kv 25.6.2008, 10:27
Код

echo "Вроде добавлено :)";

ога.. круто... а проверить не судьба?

http://ru2.php.net/mysql
mysql_er......

Добавлено через 1 минуту и 3 секунды
да и кстати +1 к topy

Автор: Sassoft 25.6.2008, 12:35
переделал как написано:
Код

<?php
$_POST['id'];
$_POST['login'];
$_POST['pass'];
$_POST['info'];
if ($id=='add') {

// -----------------------------------------------------------------------------------------------

// Подключаемся к mysql серверу
$link = mysql_connect($dbhost, $dbuser, $dbpassword);

// Выбираем нашу базу данных
mysql_select_db($dbname, $link);

// -----------------------------------------------------------------------------------------------

// Добавляем запись в нашу таблицу customer
// т.е. делаем sql запрос
$query = "insert into 'sassoft' values(\"$login\",\"$pass\",\"$info\")";

mysql_query($query, $link);

// Закрываем соединение
mysql_close($link);
echo "Вроде добавлено :)";
 ;}

?>

Автор: Feldmarschall 25.6.2008, 12:46
ну и где ты выводишь ошибку mysql, как тебе было написано?
а где написано брать имя таблицы в апострофы?
что означают загадочные надписи вида $_POST['id'];?

Автор: Sassoft 25.6.2008, 12:59
Код

$query = "insert into 'sassoft' values(\"$login\",\"$pass\",\"$info\")";



это не апострафы?

Автор: Staind 25.6.2008, 13:09
Код

<form action='admin.php' method='POST'>
<br><input type='text' nаmе='login' value='Логин'>
<br><input type='text' nаmе='pass' value='Пароль'>
<br><input type='text' nаmе='info' value='Информация'>
<br><input name='submit' type='submit' value='Добавить'>
</form>
<?php
if (isset($_GET['submit']))
{
    // -----------------------------------------------------------------------------------------------
    $dbhost="ТВОЙ ХОСТ"; // хост
    $dbuser="ТВОЙ ЮЗВЕР"; // пользователь
    $dbpassword = "ТВОЙ ПАСС"; // пароль 
    $dbname="ТВОЕ НАЗВ. БАЗЫ"; // название БД MySQL
    // Подключаемся к mysql серверу
    $link = mysql_connect($dbhost, $dbuser, $dbpassword);
    // Выбираем нашу базу данных
    mysql_select_db($dbname, $link);
    // -----------------------------------------------------------------------------------------------
    // Добавляем запись в нашу таблицу 
    // т.е. делаем sql запрос
    $query = "INSERT INTO `sassoft`
                VALUES(".mysql_real_escape_string($_GET['login']).",".mysql_real_escape_string($_GET['pass']).",".mysql_real_escape_string($_GET['info']).")";
    mysql_query($query, $link);
    // Закрываем соединение
    mysql_close($link);
    echo "Вроде добавлено :)";
}
?>

Автор: Sassoft 25.6.2008, 13:16
неа, не работает

Автор: gta4kv 25.6.2008, 13:19
Staind, еще один блин....

Добавлено через 53 секунды
Sassoft, я вам дал ссылку на мануал, сказал пол название функции, ИЩИТЕ. за вас тут никто писать не будет

Автор: Staind 25.6.2008, 13:24
На скорую руку пишу.
Код

<form action='admin.php' method='POST'>
<br><input type='text' nаmе='login' value='Логин'>
<br><input type='text' nаmе='pass' value='Пароль'>
<br><input type='text' nаmе='info' value='Информация'>
<br><input name='submit' type='submit' value='Добавить'>
</form>
<?php
if (isset($_POST['submit']))
{
    // -----------------------------------------------------------------------------------------------
    $dbhost="ТВОЙ ХОСТ"; // хост
    $dbuser="ТВОЙ ЮЗВЕР"; // пользователь
    $dbpassword = "ТВОЙ ПАСС"; // пароль 
    $dbname="ТВОЕ НАЗВ. БАЗЫ"; // название БД MySQL
    // Подключаемся к mysql серверу
    $link = mysql_connect($dbhost, $dbuser, $dbpassword);
    // Выбираем нашу базу данных
    mysql_select_db($dbname, $link);
    // -----------------------------------------------------------------------------------------------
    // Добавляем запись в нашу таблицу 
    // т.е. делаем sql запрос
    $query = "INSERT INTO `sassoft`
                VALUES(".mysql_real_escape_string($_POST['login']).",".mysql_real_escape_string($_POST['pass']).",".mysql_real_escape_string($_POST['info']).")";
    mysql_query($query, $link);
    // Закрываем соединение
    mysql_close($link);
    echo "Вроде добавлено :)";
}
?>


2gta4kv, успокойся.

Автор: Sassoft 25.6.2008, 13:24
он не фиксирует ошибки!

Автор: Feldmarschall 25.6.2008, 13:24
Sassoft, это апострофы.
вот я тебя и спрашиваю - где написано брать имя таблицы в апострофы?

Автор: Sassoft 25.6.2008, 13:27
Цитата

Правильная работа со спецсимволами при составлении запросов
Итак. Как мы уже узнали выше, чтобы правильно составить запрос, надо заключать данные в кавычки и прослешивать их.
С первым всё понятно. При составлении динамических запросов мы никогда не забываем все данные заключить в кавычки:
$query="INSERT INTO `table` VALUES(NULL,'$name','$date','$price')";
Если переменная $price должна быть типа int и мы приведём её к этому типу, то можно её не заключать в кавычки. Однако, если заключим, то беды особой не будет, но зато можно будет сделать работу с данными единообразной.

Автор: Feldmarschall 25.6.2008, 13:28
gta4kv, ну для человека сложной и интересной задачей является добавление данных в базу. =)
Он хочет поделиться таким сокровенным знанием. И его в этом порыве человеколюбия не остановить, гы гы

Добавлено через 42 секунды
Sassoft, там написано данные. Про имена таблиц там написано совсем другое.

Автор: Sassoft 25.6.2008, 13:32
$query="INSERT INTO `table` VALUES(NULL,'$name','$date','$price')";

это что тогда??? не имя таблицы и не кавычки??

Автор: gta4kv 25.6.2008, 13:55
не кавычки точно  smile 

Автор: Glip 25.6.2008, 14:05
Sassoft, Staind,  вы вообще собираетесь проверять возвращаемые значения 
Код

   $link = mysql_connect($dbhost, $dbuser, $dbpassword);
    mysql_select_db($dbname, $link);
    mysql_query($query, $link);

на ошибки? например:
Код

if (!$link) {
    die('Could not connect: ' . mysql_error());
}


Автор: Sassoft 25.6.2008, 14:07
Я это сделал, просто здесь не написал код....
проверяю на ошибки функициями errno и error
ошибки не выдает, к базе конектица но данные не заносит

Автор: gta4kv 25.6.2008, 14:07
Glip, вот зачем надо было выкладывать?  мы еще не наиздевались  smile 

upd
комментарий к след. посту.

Feldmarschall не понимает юмора

Автор: Feldmarschall 25.6.2008, 14:11
Sassoft, я не поленился, и пошел прочитать ещё раз. Там написано - что это за кавычки. 
По поводу не заносит. А откуда у тебя взялись переменные $login и так далее? из воздуха?

gta4kv, издеваешься тут только ты. Лично я хочу чтобы человек понял хотя бы самые основы.


Автор: Sassoft 25.6.2008, 14:13
Feldmarschall, на первой странице написано кто что откуда берет.. там форма стоит

Добавлено через 2 минуты и 34 секунды
вот код:
Код

<form action='admin.php' method='POST'>
<br><input type='text' nаmе='login' value='Логин'>
<br><input type='text' nаmе='pass' value='Пароль'>
<br><input type='text' nаmе='info' value='Информация'>
<br><input name='submit' type='submit' value='Добавить'>
</form>
<?php
if (isset($_POST['submit']))
{
   // -----------------------------------------------------------------------------------------------
$dbhost=""; // хост
$dbuser=""; // пользователь
$dbpassword = ""; // пароль 
$dbname=""; // название БД MySQL

// Подключаемся к mysql серверу
$link = mysql_connect($dbhost, $dbuser, $dbpassword)  or die("Could not connect : " . mysql_error());
    print "Connected successfully";

// Выбираем нашу базу данных
mysql_select_db($dbname, $link)  or die("Could not select database");
echo mysql_errno() . ": " . mysql_error(). "\n";

// -----------------------------------------------------------------------------------------------
    // Добавляем запись в нашу таблицу 
    // т.е. делаем sql запрос
    $query = "INSERT INTO sassoft
                VALUES(".mysql_real_escape_string($_POST['login']).",".mysql_real_escape_string($_POST['pass']).",".mysql_real_escape_string($_POST['info']).")";
    mysql_query($query, $link);
    // Закрываем соединение
    mysql_close($link);
    echo "Вроде добавлено :)";
}
?>

Автор: Feldmarschall 25.6.2008, 14:17
во-первых, на первой странице ничего не написано - я спрашивал не про форму, а про переменные.
во-вторых, никто не знает, что у тебя "там есть, а здесь ты не написал код".

Автор: SamDark 25.6.2008, 14:27

M
SamDark
gta4kv! Прекращаем флудить. Если есть что ответить по делу — отвечаем.

Автор: MoLeX 25.6.2008, 14:30

 ! 
MoLeX
Модератор: заканчиваем треп не поделу!!!


Добавлено через 39 секунд

 

Автор: Staind 25.6.2008, 18:39
Цитата

Sassoft, Staind,  вы вообще собираетесь проверять возвращаемые значения 

Вообще ты не по делу пишешь. Я не буду за человека писать грамотно проработанный скрипт, за это, обычно, деньги берут.

Автор: Sassoft 26.6.2008, 11:41
Staind, тогда чего ты лезешь сюда? Чтобы крутизну свою показать ? smile

Добавлено через 53 секунды
грамотно проработанный скрипт??? ))))
это все равно что в делфи подсказать как в файл данные записывать, деньги берут за это  smile 
весело тут у вас

Автор: Feldmarschall 26.6.2008, 13:43
Sassoft, записать в файл и грамотно записать в файл - это разные вещи.
К тому же, у тебя операция сложнее, чем запись в файл. Алгоритм, состоящий из нескольких этапов: получить данные из формы, составить запрос с этими данными в соответствии с синтаксисом SQL, затем выполнить этот запрос.
Программу надо контролировать на каждом этапе. А не запускать целиком и разводить руками "не работает".
Передаешь данные? проверь, получил ли ты их в  скрипте, есть ли что-то в переменных.
Получил? Составляй запрос. Составил? Выведи на экран, чтобы посмотреть - все ли в нем правильно.
И только после этого добавлять в базу.
Дельфи - это, конечно, хорошо, но программированию тоже надо учиться начинать когда-то.

Автор: Sassoft 26.6.2008, 13:58
Feldmarschall, это вы тоже типа пришли в эту тему постебаца да?? 

upd без вас я бы не догадался проверить есть ли что-то в переменных и наличие ошибок...
переменные передаются и ошибок sql не передает

Автор: skyboy 26.6.2008, 14:06
Sassoft, успокойся. без истерики проблему решать проще.

Автор: Sassoft 26.6.2008, 14:07
Ладно, закрывайте тему... тут одни балоболы сидят.. спасибо за 3 страницы флуда

Автор: Feldmarschall 26.6.2008, 14:08
Нет, я пришел поделиться знаниями.
Судя по приведенным примерам кода ты таки да - не догадался. Ни проверить, ни вывести.
А я привык доверять коду, а не оправданиям.

Приведешь здесь код, который получает переменные и формирует правильный запрос, приведешь текст полученного запроса - будем думать, что ты ещё мог сделать не так.
А до тех пор я буду предполагать, что данные не переданы и запрос сформирован с ошибками синтаксиса.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)