Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Ошибка mysql_query


Автор: Kigmatig 20.5.2009, 16:28
Вот код:
Код

<?php

function db_connect($user='admin', $password='root', $db='new'){
mysql_connect('localhost', $user, $password);
mysql_select_db($db);
}

if (db_connect){
$sql = "inser into new (username, email, password) values ('1','2','3')";
mysql_query($sql);
}
?>

Выводит ошибку: 
Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\Apache\htdocs\connect\new.php on line 13

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:\Apache\htdocs\connect\new.php on line 13

P.S. И еще вопрос: в какой таблице базы данных mysql хранятся записи пользователей бд?

Автор: skyboy 20.5.2009, 16:50
функции вызываются не просто "db_connect", а "db_connect()".
а код "if(db_connect)" работает с константой "db_connect". Т.к. константа не была объявлена, то она считается равной строке, совпадающей с собственным именем. Т.е. твой код эквивалентен
Код

<?php
function db_connect($user='admin', $password='root', $db='new'){
mysql_connect('localhost', $user, $password);
mysql_select_db($db);
}
if ("db_connect"){
$sql = "inser into new (username, email, password) values ('1','2','3')";
mysql_query($sql);
}
?>

и if("db_connect") возвращает true(т.к. по приведению типов любая непустая строка соответствует true).
Но так как функция db_connect не вызывалась, то mysql_query будет пытаться подключиться с некотрыми внутренными дефолтными параметрами(ODBC@localhost), соединение по которым, очевидно, невозможно.

Автор: Akina 20.5.2009, 17:36
А пользователь admin имеет в mysql специальное назначение и специальные, причём не отнимаемые, права, и давать ему права на таблицы - верх разгильзяйства.

Автор: Kigmatig 20.5.2009, 20:32
Вот исправил:
Код

<?php
function db_connect($user='admin', $password='root', $db='new'){
mysql_connect('localhost', $user, $password);
mysql_select_db($db);
}

if (db_connect()){
$sql = "inser into new (username, email, password) values ('1','2','3')";
mysql_query($sql);
}
?>

но скрипт все равно не работает((
ошибку не выводит, но запись не производится

Автор: Shark 20.5.2009, 21:01
Error_Reporting(E_ALL); ????
Код

mysql_query($sql) or die (mysql_error());

что показывает

Автор: Kigmatig 20.5.2009, 21:13
ничего, пустой экран.

Автор: Shark 20.5.2009, 21:16
значит ошибка тут:
Код

function db_connect($user='admin', $password='root', $db='new'){
mysql_connect('localhost', $user, $password);
mysql_select_db($db);

попробуй так:
Код

$dbhost="localhost";
$dbuser="admin";
$dbpass="root";
$dbname="new";

$bd=mysql_connect($dbhost, $dbuser, $dbpass, $dbname);
mysql_select_db($dbname);


Автор: Kigmatig 20.5.2009, 21:22
если так:
Код

<?php
$dbhost="localhost";
$dbuser="admin";
$dbpass="root";
$dbname="new";
$bd=mysql_connect($dbhost, $dbuser, $dbpass, $dbname);
mysql_select_db($dbname);
$sql = "inser into new (username, email, password) values ('1','2','3')";
mysql_query($sql) or die (mysql_error());
?>

то выводит ошибку:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'inser into new (username, email, password) values ('1','2','3')' at line 1

Автор: Shark 20.5.2009, 21:25
у тебя ошибка в SQL-запросе. У тебя написано INSER вместо INSERT

Автор: Kigmatig 20.5.2009, 21:30
Все работает!!! Большое спасибо, уже два дня бьюсь smile 

Автор: SneG0K 20.5.2009, 21:52
Цитата(Kigmatig @  20.5.2009,  19:32 Найти цитируемый пост)
$sql = "inser into new (username, email, password) values ('1','2','3')";

Кто так пишет запросы? smile 
Код

$sql = "INSERT INTO `new` (`username`, `email`, `password`) VALUES ('1', '2', '3')";


Автор: gta4kv 20.5.2009, 23:08
[del]

Автор: SneG0K 20.5.2009, 23:15
Цитата(gta4kv @  20.5.2009,  22:08 Найти цитируемый пост)
Я так пишу, если сложилось мнение что запросы надо писать только с большой буквы, то оставьте такое мнение при себе. 

Нет, я не о том... Я про INSERT
А про стили написания - это дело принципа

Автор: gta4kv 21.5.2009, 07:50
SneG0K, извиняюсь smile

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