Автор Тема: Не могу найти ошибку в этой строке  (Прочитано 10540 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Не могу найти ошибку в этой строке
« Ответ #15 : 06 Января 2004, 21:26:19 »
у меня имя переменной в примере написано с маленькой буквы, а у него - с большой.
вот что значит копировать не метод, не умение, не знание, а тупо, как обезьяна, просто передирать код, не понимая его смысла

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Не могу найти ошибку в этой строке
« Ответ #16 : 06 Января 2004, 22:10:11 »
вот.
Раз уж ты ничего, кроме готового кода не воспринимаешь - вот тебе готовый и правильный.
Если есть вопросы - обращайся.

<?php 
$Host 
"database.agava.ru"
$User "xxx"
$Password "xxx"
$DBName "xxx"
$TableName "Feedback"
mysql_connect($Host$User$Password) or die (mysql_error()); 
mysql_select_db($DBName) or die (mysql_error());
$Query="INSERT INTO $TableName (".implode(",",array_keys($Array)).") values (\'".implode("\',\'",$Array)."\')";
if (
mysql_query($Query)) {
  
header("Location: sql_feedback_view.php");
  exit;
} else { 
  echo 
"Не удается обновить таблицу $TableName.
\\n"
;
  echo 
"Ошибка: ".mysql_error()."
\\n"
;
  echo 
"Запрос: $Query
\\n"
;

?>


Код я не проверял, если есть опечатки - постарайся исправить их сам.
Если ты действительно хочешь научиться правильно писать на РНР.
Если нет - только скажи - я закрою эту тему и мы расстанемся друзьями.

Оффлайн Matold

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 25
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.matold.narod.ru/
Не могу найти ошибку в этой строке
« Ответ #17 : 06 Января 2004, 22:54:21 »
Цитировать
и тут же берешь код, в котором столбцы не перечислены

Так как я уменьшил таблицу, поэтому не стал перечислять столбцы.

Цитировать
Неужели так трудно подумать и спросить, что непонятно?
человеку дают ГОТОВЫЙ правильный пример

Вот мне и не понятно, если ты объясняешь что пример правильный и готовый, то почему результат кода
<?php 
$Host 
"database.agava.ru"
$User "xxx"
$Password "xxx"
$DBName "xxx"
$TableName "Feedback"
$Link mysql_connect($Host$User$Password); 
//$Query = "INSERT into $TableName values (\\"0\\", \\"$Array[FirstName]\\", \\"$Array[LastName]\\", \\"$Array[Email]\\", \\"$Array[Comments]\\")"; 
$query="INSERT INTO $TableName values (0,\'".implode("\',\'",$Array)."\')"
if (
mysql_db_query ($DBName$Query$Link)) { 
echo 
"обновлены данные таблицы $TableName.
\\n"

echo 
"\\n <meta http-equiv=\\"refresh\\" content=\\"1;URL=sql_feedback_view.php\\" >"
} else { 
echo 
"Не удается обновить таблицу $TableName.
\\n"


mysql_close ($Link); 
?> 

при выполнении выдает "Не удается обновить таблицу" ??? Я написал абсолютно как ты сказал:
Цитировать
ну, или если без перечисления полей, то так:

$query="INSERT INTO $TableName values (0,\'".implode("\',\'",$Array)."\');

Так ты убиваешь кучу зайцев: получается универсальный запрос не зависящий от состава и количества полей.
получается синтаксически правильный запрос.
Избегаешь возможных ошибок при ручном вводе.


Цитировать

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

Тут я тебя не понимаю... //$Query=... Это то, что у меня работало, но чтобы не стирать я ее поместил в комментарий.
То что ты сказал - $query я вставил в программу. Ну так объясни, ПОЧЕМУ НЕ РАБОТАЕТ ? Причем здесь "копировать не метод, не умение, не знание, а тупо, как обезьяна, просто передирать код, не понимая его смысла" Я понимаю смысл своего кода, и он действует, но если вставить твой код, то не база не обновляется

Оффлайн Matold

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 25
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.matold.narod.ru/
Не могу найти ошибку в этой строке
« Ответ #18 : 06 Января 2004, 23:02:25 »
Цитировать
Я думаю, нужно все таки почитать что такое . и зачем она нужна... как только ты пймешь, что это такое... я думаю ты поймешь конструкции \\" в твоем коде - гупость.

Если не секрет, где найти про . ? (Вернее как найти? В руководстве php поиск точки ничего не дает) Насколько я знаю она складывает 2 строки, но не понимаю как относиться к данному примеру

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Не могу найти ошибку в этой строке
« Ответ #19 : 06 Января 2004, 23:38:00 »
Цитировать
Matold:
Вот мне и не понятно, если ты объясняешь что пример правильный и готовый,

ты смеешься что ли надо мной?
по-моему, ты издеваешься.
Правильный код, который я тебе дал, выводит ПРИЧИНУ, почему  "Не удается обновить таблицу" , а не только это тупое сообщение.

Цитировать
Matold:
То что ты сказал - $query я вставил в программу

ты вставил $qery, а дальше у тебя, в следующей строчке запрашивается $Qery
Об этом я тебе толкую, но до тебя не доходит!
Цитировать
Matold:
ПОЧЕМУ НЕ РАБОТАЕТ

объяснение одно - опечатки.
Которые надо найти и исправить.
У тебя есть другое мнение?
или ты считаешь, что я тебе эту опечатку телепатическим путем вычислю?


Давненько я не встречал такого мутного клиента.

Оффлайн Matold

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 25
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.matold.narod.ru/
Не могу найти ошибку в этой строке
« Ответ #20 : 07 Января 2004, 00:26:18 »
Цитировать
$qery, а дальше у тебя, в следующей строчке запрашивается $Qery

Ах черт! Все спасибо, я не знал что к регистру чувствителен PHP, я это просто для удобства называл с большой :))
ОГРОМНОЕ СПАСИБО НУ Я И ИДИОТ. Все, тему можно закрыть :)

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Не могу найти ошибку в этой строке
« Ответ #21 : 07 Января 2004, 00:32:02 »
точно, все работает?
ты уж на меня не обизайся за резкость.
устал я что-то...

Оффлайн FreeSpace

  • Штатный лодырь
  • Ветеран
  • *****
  • Сообщений: 613
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.infinity.com.ua
Не могу найти ошибку в этой строке
« Ответ #22 : 07 Января 2004, 01:20:36 »
Я бы добавил сюда addslashes:
« Последнее редактирование: 07 Января 2004, 02:48:07 от RomikChef »
Программирование - это единственное искусство, которое способно воплотить столь уникальное сочетание эстетики и функциональности.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Не могу найти ошибку в этой строке
« Ответ #23 : 07 Января 2004, 02:49:17 »
А я бы не добавил.
зачем?

Оффлайн FreeSpace

  • Штатный лодырь
  • Ветеран
  • *****
  • Сообщений: 613
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.infinity.com.ua
Не могу найти ошибку в этой строке
« Ответ #24 : 07 Января 2004, 07:00:22 »
Я не совсем понял. Ты спрашиваешь у меня, зачем делать addslashes перед добавлением данных в БД? :)
Программирование - это единственное искусство, которое способно воплотить столь уникальное сочетание эстетики и функциональности.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Не могу найти ошибку в этой строке
« Ответ #25 : 07 Января 2004, 14:30:09 »
в общем, да.
Будь добр - прочти фак об этом у меня в подписи.
и в той форме, в которй ты это здесь написал, никогда больше не делай.

Оффлайн FreeSpace

  • Штатный лодырь
  • Ветеран
  • *****
  • Сообщений: 613
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.infinity.com.ua
Не могу найти ошибку в этой строке
« Ответ #26 : 07 Января 2004, 20:54:33 »
Спасибо, твой фак я уже давно читал. Но на всякий случай перечитал ещё раз - может там что-то новенькое появилось :)
Не мог бы ты нормально ответить, чем тебе не понравилось моё дополнение?
Если речь идет о magic_quotes_gpc, то лично я считаю значение off нормальным для этой директивы. Либо в начале скрипта делать проверку и при необходимости чистить соответствующие массивы от слешей. Из этих предпосылок я и исходил. Или ты с этим не согласен?
Программирование - это единственное искусство, которое способно воплотить столь уникальное сочетание эстетики и функциональности.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Не могу найти ошибку в этой строке
« Ответ #27 : 08 Января 2004, 02:12:50 »
я не согласен с тем, как ты это выдал здесь - безапелляционно и безкондиционно втулить аддслашес.
9:1 за то, что у него слеши добавляются автоматом.
админ его хостинга, увы, не спросил тебя, что ты считаешь нормальным.
А жалобы ламеров "ай меня поломали!!!" ни один админ слушать не хочет.
И если сделать, как ты написал, то добавятся лишние.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Не могу найти ошибку в этой строке
« Ответ #28 : 08 Января 2004, 02:14:20 »
Matold, если ты еще слушаешь

учитывая замечание FreeSpace, можно уже сделать функцию, которая будет за нас выполнять всю рутинную работу.
с такой функцией скрипт станет компактнее и более удобочитаем.
Ее можно поместить в файл, который инклюдится во все скрипты, и пользоваться в любом месте.

function sqlInsert($TableName,$Array) {
  if (
get_magic_quotes_gpc()) foreach ($Array as $k=> $v$Array[$k]=mysql_escape_string($v);
  
$Query="INSERT INTO $TableName (".implode(",",array_keys($Array)).") values (\'".implode("\',\'",$Array)."\')"
  if (!
mysql_query($Query)) return FALSE;
  return 
mysql_insert_id();
}


первая строчка проверяет, надо ли добавить слеши, и добавляет.
вторая - формирует запрос.
третья - исполняет и если в запросе была ошибка, возвращает ложь. вс скрипте можно это проверить и обработать.
Либо, еще обработку ошибки можно поместить и в саму функцию.

последняя строчка получает id и возвращает его.
« Последнее редактирование: 08 Января 2004, 03:04:34 от RomikChef »

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Не могу найти ошибку в этой строке
« Ответ #29 : 08 Января 2004, 02:20:19 »
Цитировать
Matold:
я не знал что к регистру чувствителен PHP

именно поэтому переменные РНР принято писать в нижнем регистре, а слова разделять подчеркиванием.

имена функций не чувствительны

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28