[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: помогите с записью данных в БД
pultter
не пойму где ошибка? проверил раз 200, даже заново писал. и все равно не работает. прошу сильно не материть, т.к. начинающий (где-то может быть ерунда полная написана). Заранее спасибо
PHP
<?php

Error_Reporting
(E_ALL & ~E_NOTICE);

// удаление пробелов в начале и конце строки
$Array[log] =         trim($Array[log]);

// установки для соединения с базой
$host =         "localhost";
$user =         "pultter";
$pass =         "password";
$db_name =         "likser";
$table_name =     "user";

// соединяемся с базой
$link = @mysql_pconnect ($host, $user, $pass);

// проверяем соединились ли с mysql
if ($link) {
    print "mysql connect is ok";
}
 else {
    print "mysql connect is bad";

@
mysql_select_db ("likser");

$query = "INSERT into $table_name values ('".$Array[log]."', '".$Array[pswrd]."')";

print "the $query is add";
@
mysql_db_query($db_name, $link, $query);

if (@mysql_db_query($db_name, $link, $query)) {
    print "ok";
}
 else {
    print "bad";
}




Спустя 1 час, 25 минут, 28 секунд (4.04.2009 - 20:55) REANIMATOR написал(а):
неправельный запрос к БД
должно быть такого типа

SQL
INSERT into $table_name (log,password) values ('".$Array[log]."', '".$Array[pswrd]."')


log,password соответственно замени на свои имена полей в БД

Спустя 2 часа, 44 секунды (4.04.2009 - 22:56) modobaks написал(а):
И такой запрос может сработать, как у автора, если у него в таблице всего две колонки. Убери все @ и посмотри на, что ругается. А также добавь ко всем mysql_db_query, конструкцию or die( mysql_error() ), легче будет. Ну и попробуй поменять функцию mysql_pconnect на mysql_connect.

Спустя 4 минуты, 51 секунда (4.04.2009 - 23:00) Kuliev написал(а):
pultter
Используйте функцию mysql_connect в место mysql_pconnect
не ставьте знак собаки он поглощает ошибки, это ни есть ХОРОШО!!!
PHP
<?

$query "INSERT into $table_name values ('".$Array[log]."', '".$Array[pswrd]."')";

// Заменить 

$query "INSERT into $table_name values ('','".$Array[log]."', '".$Array[pswrd]."')";
$result mysql_query($query);
if (
$result 0) {
    print 
"ok";
} else {
    print 
"bad";
}


Спустя 13 часов, 34 минуты, 52 секунды (5.04.2009 - 12:35) pultter написал(а):
всем спасибо за помощь. исправил, попробовал все варианты, но все равно не работает... пишет ошибка в 37 строке (у меня это закрывающий тэг ?>).
ошибка следующая:
Parse error: parse error, unexpected $end in z:\home\test1.ru\www\test2.php on line 37

Спустя 5 минут, 43 секунды (5.04.2009 - 12:41) pultter написал(а):
первый раз как написал скрипт, он вместо сообщения, что все прошло успешно, оставлял мне пустой экран и данные не записывал в таблицу, поэтому решил переписать заново, а теперь вот такая непонятная ошибка...

Спустя 7 минут, 46 секунд (5.04.2009 - 12:49) Kuliev написал(а):
Цитата (pultter @ 5.04.2009 - 09:35)
всем спасибо за помощь. исправил, попробовал все варианты, но все равно не работает... пишет ошибка в 37 строке (у меня это закрывающий тэг ?>).
ошибка следующая:
Parse error: parse error, unexpected $end in z:\home\test1.ru\www\test2.php on line 37

У тебя там путаница со скобками не хватает одной или на оборот лишняя смотри внимательней код { or }

Спустя 1 час, 55 минут, 31 секунда (5.04.2009 - 14:44) twin написал(а):
Это дело на любителя конечно, н я вот не понимаю, зачем лишние движения...
Совсем не обязательно тело запроса сначала записывать в переменную. Проще, быстрее и нагляднее имхо так:

PHP
<?php
$result 
mysql_query("INSERT into $table_name values ('','".$Array[log]."', '".$Array[pswrd]."')");
if (
$result 0) {
    print 
"ok";
} else {
    print 
"bad";
}
Кроме того, константы при определении элемента массива нужно заключать в апострофы:
PHP
<?php
$result 
mysql_query("INSERT into $table_name values ('','".$Array['log']."', '".$Array['pswrd']."')");
if (
$result 0) {
    print 
"ok";
} else {
    print 
"bad";
}
Ну и совсем красиво и в полтора раза быстрее, когда используется конкатенация:
PHP
<?php
$result 
mysql_query("INSERT into `".$table_name."` values ('','".$Array['log']."', '".$Array['pswrd']."')");
if (
$result 0) {
    print 
"ok";
} else {
    print 
"bad";
}
а что бы уж совсем хорошо, операторы SQL лучше писать в одном (верхнем) регистре
PHP
<?php
$result 
mysql_query("INSERT INTO `".$table_name."`  VALUES ('','".$Array['log']."', '".$Array['pswrd']."')");
if (
$result 0) {
    print 
"ok";
} else {
    print 
"bad";
}
ну и так совсем читабельно:
PHP
<?php
$result 
mysql_query("
    INSERT INTO `"
.$table_name."`  
    VALUES ('','"
.$Array['log']."', '".$Array['pswrd']."')"
    
);
if (
$result 0) {
    print 
"ok";
} else {
    print 
"bad";
}
Это сути дела не меняет, но разобраться в таком коде бывает на много проще.
А по сути, функция mysql_query() при инсерте не возвращает никаких чисел, только true или false. По этому проверть надо так:
PHP
<?php
$result 
mysql_query("
    INSERT INTO `"
.$table_name."`  
    VALUES ('','"
.$Array['log']."', '".$Array['pswrd']."')"
    
);
if (
$result) {
    print 
"ok";
} else {
    print 
"bad";
}
А фигурные скобки лучше писать на одном уровне, тогда будет понятно, что открыто и где закрыто. Вот так:
PHP
<?php
if ($result
{
    print 
"ok";
}
else 
{
    print 
"bad";
}
А в данном случае вообще без них:

PHP
<?php
if ($result
    print 
"ok";
else 
    print 
"bad";








Спустя 13 минут, 23 секунды (5.04.2009 - 14:58) Kuliev написал(а):
twin
Создай тему ПРАВОПИСАНИЕ БЕЗ ЛИШНИХ ДВИЖЕНИЙ



_____________
Напишу индусский код. Бесплатно
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.