![]() |
Вопросы по работе с MySQL на PHP
Как скриптом определить:
1. есть ли на сервере MySQL; 2. имя MySQL базы. |
хм, если подключится - значит есть ;)
|
1. попробовать соедениться. идентификатор соединеия в случае успеха, false в противном
2. аналогично 1 только не connect, а select_db А получить список баз, тебе никто не даст |
Цитата:
|
Понятно.
А каким запросом можно узнать о наличии определённой таблицы в базе Mysql ? |
Hubbitus это скорее исключение, чем правило :)
CEO PHP код:
|
Merlin Cori Спсибо за конкретный пример. А не подскажешь ли, почему у меня это не совсем работает:
PHP код:
Undefined variable: result in testsql.php on line 9 |
Вот так правильнее:
.... $result="No result"; if ($query) { .... Переменная result определена в ответвлении которое не выполняется - вот парсер и матерится.... |
Цитата:
Код:
<? |
CEO
у тебя строка запроса заканчивается символом ; убери его. Цитата:
|
Спасибо за дельные советы, теперь стало понятнее.
Написал в скрипте так: .... $query ='CREATE TABLE user ( usID INT(5) NOT NULL, usName VARCHAR(50) NOT NULL, usPWD VARCHAR(50) NOT NULL );'; $result=mysql_query ($query); $result="No result"; print mysql_error(); Теперь выдает ошибку: Table 'base.user' doesn't exist, хотя эта таблица должна была создаться. Где моя ошибка? Merlin Cori: Убрал ; ошибка осталась. |
CEO
все работает, только что у себя проверил. Цитата:
|
Сам запрос действительно работает, табица не создавалась из-за неправильного условия:
было: $query=mysql_query("SELECT * from user"); if ($query) {... create table} нужно : if (!$query) {...} |
CEO ааа.... ну я проверял напрямую без if
|
Снова у меня не все впорядке с MySql.
Cкрипт должен создавать записи, получая данные из формы, однако записи не создаются. Помогите найти ошибку. форма: <form action="sql1.php" method="post"> <input type="text" name="name"> ... <input type="submit"> </form> скрипт: ... $HTTP_POST_VARS["$name"]; $link = mysql_connect($host, $user, $password); if ($query = "INSERT INTO user VALUE ('$name')") { print("Пользователь добавлен\n"); } else { print("попробуйте еще раз\n");} ... |
Цитата:
if (mysql_query("INSERT INTO 'user' ('name') VALUE ('$name')"))... ЗЫ Люди, а кавычки в запросах ставить обязательно, а то оно пашет и без них нормально |
Fiery_Fenix: так работает, спасибо.
|
Вопрос новичка
Подскажите, пожалуйста, где здесь закралась ошибка: <FORM ACTION="add.php" METHOD="post"> <INPUT TYPE="text" NAME="name"> <INPUT TYPE="submit" VALUE="go"> </FORM> и код <? $hostname = "localhost"; $username = "root"; $password = ""; $dbName = "test"; $userstable = "g"; MYSQL_CONNECT($hostname,$username,$password) OR DIE("DOSN'T WORK"); @mysql_select_db("$dbName") or die("DOSN'T WORK"); $query = "INSERT INTO $userstable (g_name) VALUES ('$name')"; $result = MYSQL_QUERY($query); MYSQL_CLOSE(); ?> В результате создается пустая строка, т.е. данные не передаются :confused: |
а у тебя RegisterGlobals = On?
если нет, то тогда нужно обращаться через глобальный массив: $HTTP_POST_VARS['name']; и вообще очень плохой код, как симантически, так и синтаксически... |
Если в запросе ты имя таблицы и значение ты указываешь через переменную, то это должно выгледеть так
<? $hostname = "localhost"; $username = "root"; $password = ""; $dbName = "test"; $userstable = "g"; MYSQL_CONNECT($hostname,$username,$password) OR DIE("DOSN'T WORK"); @mysql_select_db("$dbName") or die("DOSN'T WORK"); $query = "INSERT INTO ".$userstable." (g_name) VALUES ('".$name."')"; $result = MYSQL_QUERY($query); MYSQL_CLOSE(); ?> В противном случае у тебя имя таблицы получается не g, а $userstable |
а вот и нет, php допускает и такой синтаксис. дело все-таки в том, имхо, что не "видно" переменной $name, почему? я свой ответ написал, выше...
p.s. $name = "whatevername"; echo "$name" . "<BR>"; //whatevername echo '$name'. "<BR>"; //$name echo $name . "<BR>"; //whatevername echo "'$name'" . "<BR>"; //'whatevername' |
Цитата:
$result=mysql_query("INSERT INTO '$userstable' (g_name) VALUES ('$name')"); 2 killhunter: Глянь еще переменную $result в которой должен быть номер строки в базе куда вставилась твоя инфа. По ходу, для отладки, в начало РНР скрипта можно вставить echo $name; чтобы глянуть что у тебя передается по POST. ЗЫ Надо сразу писать $_GET['var'] или $_POST['var'], а то в последнем РНР (4.3.8 по-моему) простая передача переменных через Method=POST не катит :(, там RegisterGlobals = Off. ЗЗЫ Исправил :) ЗЗЗЫ Создал новую тему для разборок с RegisterGlobals :) |
как это метод пост не катит?
RegisterGlobals и должен быть off(что и сделали теперь по-умолчанию), а обращаться нужно через глобальный массив. |
Fiery_Fenix согласен, будет...... :)
|
Fiery_Fenix
register_globals=off по умолчанию начиная с 4.2.0, но на работе метода POST это никак не отражается. Просто все переданные скрипты переменные не регистрируются в качестве локальных, а доступны только через соответствующие массивы. Методы http тут не при чем. PS: тем более, даже если нет доступа к изменению php.ini, никто не мешает положить в свой каталог htaccess и выставить такой register_globals, какой нужен. |
Похоже мы углубилсиь в теоретические изыскания и отклонились от темы.... :)
killhunter ты внимательно посмотри на соответствие имен полей в таблице и скрипте |
Спасибо всем большое. Поправил и разобрался.
Работает. Пришлось поправить php.ini: gpc_order = GPC register_globals = On magic_quotes_gpc = Off magic_quotes_runtime = Off safe_mode_protected_env_vars = Off |
killhunter
Цитата:
Лучше передаваемые переменные получать через массив $HTTP_POST_VARS['name'], как сказал Sheryld |
| Часовой пояс GMT +4, время: 17:44. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.