Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Создание таблицы MySql, и запись значений

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Создание таблицы MySql, и запись значений .. не получается запись..
Конструктор
Отправлено: 21 Марта, 2011 - 14:57:37
Post Id



Частый гость


Покинул форум
Сообщений всего: 128
Дата рег-ции: Апр. 2010  


Помог: 1 раз(а)




Пробую изучать создание базы , таблиц и запись значений в таблицу..
База данных MySql, сервер - Denwer

Написал следующий код, но почему то он не создает запись, прошу помочь найти ошибки..

CODE (html):
скопировать код в буфер обмена
  1. <html><body>
  2.  
  3. <table width=100% height=100%>
  4. <tr><td align=center>
  5. <h2 align=center>Это файл /home/test1.ru/www/index.html.</h2>
  6. </td></tr>
  7. </table>
  8.  
  9. <?php
  10. $con = mysql_connect("localhost","root","");
  11. if (!$con)
  12.  {
  13.  die('Could not connect: ' . mysql_error());
  14.  }
  15.  
  16. if (mysql_query("CREATE DATABASE my_db",$con))
  17.  {
  18.  echo "Database created";
  19.  }
  20. else
  21.  {
  22.  echo "Error creating database: " . mysql_error();
  23.  }
  24.  
  25.  
  26.  
  27. // Create table
  28. mysql_select_db("my_db", $con);
  29. $sql = "CREATE TABLE Persons
  30. (
  31. FirstName varchar(15),
  32. LastName varchar(15),
  33. Age int
  34. )";
  35.  
  36. // Execute query
  37. mysql_query($sql,$con);
  38.  
  39. mysql_query (" INSERT INTO Persons
  40. ('FirstName','LastName','Age')
  41. VALUES ('Владимир','Путин','49') ");
  42.  
  43.  
  44. mysql_close($con);
  45.  
  46. ?>
  47.  
  48. </body></html>


-----
Если все время идти вперед, до цели будет немного ближе..
 
 Top
grefon
Отправлено: 21 Марта, 2011 - 15:07:30
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




Во первых на mysql_query() нужно тоже ставить mysql_error(), чтобы видеть где ошибка.
Во вторых вынесите запрос из функции:

PHP:
скопировать код в буфер обмена
  1. $sql = " INSERT INTO Persons ('FirstName','LastName','Age') VALUES ('Владимир','Путин','49') ";
  2. mysql_query($sql,$con);


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
Конструктор
Отправлено: 21 Марта, 2011 - 15:24:01
Post Id



Частый гость


Покинул форум
Сообщений всего: 128
Дата рег-ции: Апр. 2010  


Помог: 1 раз(а)




Код дополнил , но по прежнему запись не создается может я не так в PhpAdmin смотрю?

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $con = mysql_connect("localhost","root","");
  3. if (!$con)
  4.   {
  5.   die('Could not connect: ' . mysql_error());
  6.   }
  7. if (mysql_query("CREATE DATABASE my_db",$con))
  8.   {
  9.   echo "Database created";
  10.   }
  11. else
  12.   {
  13.   echo "Error creating database: " . mysql_error();
  14.   }  
  15. // Create table
  16. mysql_select_db("my_db", $con);
  17. $sql = "CREATE TABLE Persons
  18. (
  19. FirstName varchar(15),
  20. LastName varchar(15),
  21. Age int
  22. )";
  23. // Execute query
  24. mysql_query($sql,$con);
  25. $sql=" INSERT INTO Persons
  26. ('FirstName','LastName','Age')
  27. VALUES ('Владимир','Путин','49') ";
  28. mysql_query($sql,$con);  
  29. mysql_close($con);  
  30. ?>


-----
Если все время идти вперед, до цели будет немного ближе..
 
 Top
grefon
Отправлено: 21 Марта, 2011 - 15:27:23
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




PHP:
скопировать код в буфер обмена
  1. $sql=" INSERT INTO Persons
  2. (FirstName,LastName,Age)
  3. VALUES ('Владимир','Путин','49') ";
  4. mysql_query($sql,$con) or die(mysql_error());  


У Вас были лишние одинарные кавычки. И ставьте mysql_error()!


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
Конструктор
Отправлено: 21 Марта, 2011 - 15:29:15
Post Id



Частый гость


Покинул форум
Сообщений всего: 128
Дата рег-ции: Апр. 2010  


Помог: 1 раз(а)




Одну из ошибок нашел:
PHP:
скопировать код в буфер обмена
  1. $sql=" INSERT INTO Persons
  2. (FirstName,LastName,Age)
  3. VALUES ('Владимир','Путин','49') ";
  4.  


FirstName,LastName,Age - все переменные были в кавычках.. ' '
После удаления запись добавилась,
Если есть еще ошибки, буду рад увидеть их..
(Добавление)
Конструктор пишет:
У Вас были лишние одинарные кавычки.

похоже одновременно писали,
но все же спасибо..!


-----
Если все время идти вперед, до цели будет немного ближе..
 
 Top
grefon
Отправлено: 21 Марта, 2011 - 15:32:10
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




Конструктор пишет:
похоже одновременно писали

Бывает Улыбка Хорошо, что сами разобрались!


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
Конструктор
Отправлено: 21 Марта, 2011 - 18:03:40
Post Id



Частый гость


Покинул форум
Сообщений всего: 128
Дата рег-ции: Апр. 2010  


Помог: 1 раз(а)




Добавил пару строк,
а как теперь вывести содержимое ячеек таблицы MySql в таблицу Html?


-----
Если все время идти вперед, до цели будет немного ближе..
 
 Top
grefon
Отправлено: 21 Марта, 2011 - 18:08:11
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




Вот простой вариант:

PHP:
скопировать код в буфер обмена
  1. $zapros="SELECT * FROM table";
  2. $result = mysql_query($zapros) or die (mysql_error());
  3. echo '<table>';
  4. while ( $row = mysql_fetch_array($result) ) {
  5.         echo '<tr>';
  6.         echo '<td>'.$row[0].'</td>
  7.                  <td>'.$row[1].'</td>
  8.                  <td>'.$row[2].'</td>
  9.                  <td>'.$row[3]."</td>";
  10.         echo '</tr>';
  11. }
  12. echo '</table>';

(Отредактировано автором: 21 Марта, 2011 - 18:14:45)



-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
Конструктор
Отправлено: 21 Марта, 2011 - 19:56:57
Post Id



Частый гость


Покинул форум
Сообщений всего: 128
Дата рег-ции: Апр. 2010  


Помог: 1 раз(а)




PHP:
скопировать код в буфер обмена
  1. $zapros="SELECT * FROM Persons";
  2. $result = mysql_query($zapros) or die (mysql_error());
  3. echo '<table>';
  4. while ( $row = mysql_fetch_array($result) ) {
  5.         echo '<tr>';
  6.                 echo '<td>'.$row[0].'</td>.
  7.                         <td>'.$row[1].'</td>.
  8.                         <td>'.$row[2].'</td>.
  9.                         <td>'.$row[3]."</td>";
  10.         echo '</tr>';
  11. }
  12. echo '</table>';


спасибо, попровил "table" на мою таблицу "Persons"
все вывелось в табличном виде.
Хотел спросить а как цикл while (...){} можно описать на словах?
Пока копируются строки, вывести 3 столбца текущей строки? А каков алгоритм перебора строк?
$row = mysql_fetch_array($result) - возвращает значение "true"?

(Отредактировано автором: 22 Марта, 2011 - 10:32:55)



-----
Если все время идти вперед, до цели будет немного ближе..
 
 Top
Конструктор
Отправлено: 22 Марта, 2011 - 11:18:50
Post Id



Частый гость


Покинул форум
Сообщений всего: 128
Дата рег-ции: Апр. 2010  


Помог: 1 раз(а)




Ничего не пойму, удалил вручную в PhpAdmin свою базу с таблицей, и теперь этот же код не работает..
выдает ошибку : Error creating database: Can't create database 'my_db'; database existsTable 'my_db.persons' doesn't exist
1я понятно - база создается , значит еще раз нельзя.. а вторая почему? (Table 'my_db.persons' doesn't exist)
Код тот же.. :
PHP:
скопировать код в буфер обмена
  1. <html><body>
  2.  
  3. <table width=100% height=100%>
  4. <tr><td align=center>
  5. <h2 align=center>Это файл /home/test1.ru/www/index.html.</h2>
  6. </td></tr>
  7. </table>
  8.  
  9. <?PHP
  10. $con = mysql_connect("localhost","root","");
  11. if (!$con)
  12.   {
  13.   die('Could not connect: ' . mysql_error());
  14.   }
  15.  
  16. if (mysql_query("CREATE DATABASE my_db",$con))
  17.   {
  18.   echo "Database created";
  19.   }
  20. else
  21.   {
  22.   echo "Error creating database: " . mysql_error();
  23.   }
  24.  
  25.  
  26. // Create table
  27. mysql_select_db("my_db", $con);
  28. $sql = "CREATE TABLE Persons
  29. (
  30. FirstName varchar(15),
  31. LastName varchar(15),
  32. Age int
  33. )";
  34.  
  35. // Execute query
  36. mysql_query($query,$con);
  37.  
  38. $query=" INSERT INTO Persons
  39. (FirstName,LastName,Age)
  40. VALUES ('Владимир','Путин','49') ";
  41. mysql_query($query,$con) or die(mysql_error());
  42.  
  43. $query=" INSERT INTO Persons
  44. (FirstName,LastName,Age)
  45. VALUES ('Александр','Пушкин','35') ";
  46. mysql_query($query,$con) or die (mysql_error());
  47.  
  48.  
  49.  
  50. ?>
  51.  
  52. </body></html>


Извиняюсь, уже нашел ошибку: для запросов я менял переменную $sql на $query, и в одном месте забыл поменять.
(Добавление)
Кстати вопрос,
для SQL запроса всегда лучше создавть переменную $sql и передавать ее в запрос,
или может лучше все прописать именно в запросе?

PHP:
скопировать код в буфер обмена
  1. $sql=" INSERT INTO Persons
  2. (FirstName,LastName,Age)
  3. VALUES ('Александр','Пушкин','35') ";
  4. mysql_query($sql,$con) or die (mysql_error());


Ведь на лишнюю переменную наверное лишняя память тратится?
Как это с точки зрения оптимизации?

(Отредактировано автором: 22 Марта, 2011 - 11:25:03)



-----
Если все время идти вперед, до цели будет немного ближе..
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB