Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Выясняем не зарегистрировано ли уже это имя

Сообщения:  [1-10]   [11-13] 

 
 автор: Бамси   (29.03.2006 в 15:50)   письмо автору
 
   для: Trianon   (29.03.2006 в 14:35)
 

Вообщем вот это
$sql = mysql_query("select * from users where CharsNick = \"$name\"");
:)

   
 
 автор: Trianon   (29.03.2006 в 14:35)   письмо автору
 
   для: Бамси   (29.03.2006 в 14:23)
 

>Бооольшое спасибо! :) использовал (/").
Большое пожалуйста. Использовать (/") Вы не смогли бы.
Вероятно, Вы использовали (\"). Потому что слэши тоже бывают разные. :-/ :-| :-\ :-)

   
 
 автор: Бамси   (29.03.2006 в 14:23)   письмо автору
 
   для: Trianon   (29.03.2006 в 10:59)
 

Ух.. все понял большое спасибо.

select * from users where CharsNick = "Solker"

К сожалению, данное имя уже зарегистрировано. Поробуйте другое.

Бооольшое спасибо! :) использовал (/").

   
 
 автор: Trianon   (29.03.2006 в 10:59)   письмо автору
 
   для: Бамси   (29.03.2006 в 04:36)
 

Вот так писать нельзя:

  $sql = mysql_query("select * from users where CharsNick = $name"); 
  echo "select * from users where CharsNick = '".$name."';"; 

Вы печатаете (и разглядываете потом) одну строку, а исполнять пытаетесь совершенно другую.
Следует печатать и исполнять одну и ту же строку:

$query = "select * from users where CharsNick = '".$name."';";
$sql = mysql_query($query);
echo $query;


Вот тот вариант с двойными кавычками, который Вам показала elenaki:
$query = 'select * from users where CharsNick ="'. $name.'"';

Могу показать еще один.
$query = "select * from users where CharsNick =\"$name\"";

Могу показать Вам вариант с одинарными кавычками:
$query = "select * from users where CharsNick ='$name'";

И еще один с одинарными кавычками:
$query = 'select * from users where CharsNick =\''.$name.'\'';

Все эти четыре варианта - рабочие.
Работают любые кавычки - что двойные, что одинарные.

>Дак вот мне надо что бы переменная $name отображалась с
>двух сторон двойными ковычками, но зделать это у меня не
>получаеться, т.к. он щитает кавычки частью php кода, и
>ввыодит сообщение о ошибки в синтаксе.

Не надо путать кавычки обрамления строк PHP и кавычки обрамления строк MYSQL.
Последние вы должны расписать по правилам PHP как обычные символы, т.е. сменить с двойных на одинарные (или наоборот) , либо заэкранировать, если менять тип не хотите.
PHP забирает свой слой кавычек, MySQLу достается свой слой, если Вы его правильно оформили.

Теперь об отличиях двойных и одинарных кавычек. Для PHP (т.е. для наружного слоя кавычек) есть разница - В одинарных кавычках PHP не будет подставлять значения $переменных, и Вам придется сцеплять строку из кусков с помощью точек. С двойными кавычками наружного слоя в этом плане проще. Все $переменные будут подставлены.

А вот MYSQL'у совершенно пофигу, какие ему достанутся кавычки - двойные или одинарные. Он будет работать с любыми. Вообще без них он работать не будет, поскольку текст должен быть чем-то ограничен, иначе возникнет синтаксическая путаница. PHP ведь тоже без кавычек со строками грубо говоря не работает - Вы же этому не удивляетесь?

PS. Вообще-то одинарные кавычки правильно называются апострофами.
PPS. У MySQL есть еще один вид кавычек для обрамления имен таблиц и столбцов - обратные одинарные косые кавычки (кнопка на клавиатуре между Esc и Tab), которые правильно называются слабыми ударениями. Правда этот форум их корёжит, и их в здешних сообщениях можно угадывать только силой мысли. :)

   
 
 автор: elenaki   (29.03.2006 в 10:24)   письмо автору
 
   для: Бамси   (29.03.2006 в 04:36)
 

$sql = mysql_query('select * from users where CharsNick ="'. $name.'"');

   
 
 автор: Бамси   (29.03.2006 в 04:36)   письмо автору
 
   для: Trianon   (28.03.2006 в 17:30)
 

Вообщем вот что понял и в чем не могу разобраться, написал вот такой скрипт.

<?
// Выясняем не зарегистрировано ли уже это имя
  
$name "Solker";
  
$link mysql_connect("localhost""root""toor");
   
mysql_select_db("perepis"$link);
  
$sql mysql_query("select * from users where CharsNick = $name");
  echo 
"select * from users where CharsNick = '".$name."';";
  print 
"<br>";
  echo 
mysql_error();
#проверяем количество строк с CharsName=Solker если таких нет то mysql_num_rows($sql)=0
  
if(mysql_num_rows($sql)!=0){
echo 
"К сожалению, данное имя уже зарегистрировано. Поробуйте другое.";
}else{
echo 
"Это имя свободно";
}
?>

Вот что мне выводит скрипт:

select * from users where CharsNick = 'Solker';
Unknown column 'Solker' in 'where clause'
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\WebServer\WWW\test.php on line 11
Это имя свободно

Тоесть криво выполняеться запрос в SQL.
select * from users where CharsNick = 'Solker';
Не хочет выполняться не в какую, а
select * from users where CharsNick = "Solker";
Работает прекрастно.
Без кавычек кстати не работает тоже.
Дак вот мне надо что бы переменная $name отображалась с двух сторон двойными ковычками, но зделать это у меня не получаеться, т.к. он щитает кавычки частью php кода, и ввыодит сообщение о ошибки в синтаксе.
Вообщем помогите мне зделать что бы запрос выводился в виде
select * from users where CharsNick = "Solker";
А не без ковычек или с одинарными ковычками.

   
 
 автор: Trianon   (28.03.2006 в 17:30)   письмо автору
 
   для: Бамси   (28.03.2006 в 16:37)
 

У меня такое подозрение, что переменная CharsNick используется у Вас

$sql = mysql_query("select * from users where (CharsNick='$CharsNick')"); 

раньше чем определяется

$CharsNick = substr($_POST["CharsNick"],0,32);

   
 
 автор: Бамси   (28.03.2006 в 16:37)   письмо автору
 
   для: Бамси   (28.03.2006 в 01:26)
 

Ну не понимаю я почему не работает, помогите :)

   
 
 автор: Бамси   (28.03.2006 в 01:26)   письмо автору
 
   для: Shorr Kan   (28.03.2006 в 00:55)
 

не понел, но это же работает.

  if (empty($_POST["CharsNick"])) 
  {
    $action = ""; 
    $error = $error."<LI>Вы не ввели имя вашего персонажа.\n";
  }

   
 
 автор: Shorr Kan   (28.03.2006 в 00:55)   письмо автору
 
   для: Бамси   (27.03.2006 в 21:59)
 

Вы проверять-то проверяете, но выполнение - продолжаете.... даже если mysql_num_rows($sql)!=0 .

   

Сообщения:  [1-10]   [11-13] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования