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

Форум MySQL

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

 

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

вид форума:
Линейный форум Структурный форум

тема: помогите найти ошибку в поиске по колонке??
 
 автор: jelenad   (22.04.2009 в 19:32)   письмо автору
 
 

имеется табличка subsection в базе данных
в которой такие даные как:

[code
subsection_id int unsigned not null auto_inrement primary key
subcection_name char(80) not null,
section_id in unsignet null default[/code]

как сделать поиск по subsection_name???




<?php

/* Соединение, выбор БД */

$link mysql_connect("localhost""root""qwerty")

or die(
"Не соединилось!!!");

print 
"Соединение успешно";

mysql_select_db("books") or die("Не найдена БД");

/* Выполнение SQL запроса */

$query "SELECT subsection_name FROM subsection";

$result mysql_query($query) or die("Запрос ошибочный");

/* Печать результатов в HTML */

print "<table>\n";


/* Освобождение памяти, занятой результатом запроса */

mysql_free_result($result);

/* Закрытие соединения */

mysql_close($link);

?> 

  Ответить  
 
 автор: Trianon   (22.04.2009 в 19:41)   письмо автору
 
   для: jelenad   (22.04.2009 в 19:32)
 

а входные параметры поиска где?

  Ответить  
 
 автор: jelenad   (22.04.2009 в 19:45)   письмо автору
 
   для: Trianon   (22.04.2009 в 19:41)
 

входные параметры???? которые мы вводим для поиска??

  Ответить  
 
 автор: Trianon   (22.04.2009 в 20:09)   письмо автору
 
   для: jelenad   (22.04.2009 в 19:45)
 

ну да.
Надо же знать, что искать.

  Ответить  
 
 автор: jelenad   (22.04.2009 в 20:22)   письмо автору
 
   для: Trianon   (22.04.2009 в 20:09)
 

$subsection_name=$_POST['subsection_name']
if (empty($_POST['subsection_name']))
die ("Не все данные введены.<br>
Пожалуйста, вернитесь назад и закончите ввод");

правильно??

  Ответить  
 
 автор: Trianon   (22.04.2009 в 20:28)   письмо автору
 
   для: jelenad   (22.04.2009 в 20:22)
 

$sn = "'" . mysql_escape_string($subsection_name) . "'";
$query = "SELECT * FROM subsection WHERE `subsection_name` = $sn";

  Ответить  
 
 автор: jelenad   (22.04.2009 в 20:31)   письмо автору
 
   для: Trianon   (22.04.2009 в 20:28)
 

пишет только : Соединение успешно и всё но не неходит :(

  Ответить  
 
 автор: Trianon   (22.04.2009 в 20:33)   письмо автору
 
   для: jelenad   (22.04.2009 в 20:31)
 

результат запроса нужно вывести.
Судя по некоторым Вашим темам, Вы это делать умеете.

  Ответить  
 
 автор: jelenad   (22.04.2009 в 20:39)   письмо автору
 
   для: Trianon   (22.04.2009 в 20:33)
 

<?php
$sn 
"'" mysql_escape_string($subsection_name) . "'";
$query "SELECT * FROM subsection WHERE `subsection_name` = $sn";
/* Соединение, выбор БД */
$link mysql_connect("localhost""root""qwerty")
or die(
"Не соединилось!!!");
print 
"Соединение успешно";
mysql_select_db("books") or die("Не найдена БД");
/* Выполнение SQL запроса */
$query "SELECT subsection_name FROM subsection";
$result mysql_query($query) or die("Запрос ошибочный");
$res mysql_query($query) or die(mysql_error());
while(
$row mysql_fetch_array($res))
{
echo 
" <tr> ";

echo 
" <td>".$row['subsection_name']."</td>";
echo 
"</tr>";
}


/* Освобождение памяти, занятой результатом запроса */

mysql_free_result($result);

/* Закрытие соединения */

mysql_close($link);

?> 




так да ???

  Ответить  
 
 автор: Trianon   (22.04.2009 в 20:55)   письмо автору
 
   для: jelenad   (22.04.2009 в 20:39)
 

и опять отсутствуют теги <table>

  Ответить  
 
 автор: jelenad   (22.04.2009 в 21:02)   письмо автору
 
   для: Trianon   (22.04.2009 в 20:55)
 

<table border="0">
<?php
$sn 
"'" mysql_escape_string($subsection_name) . "'";
$query "SELECT * FROM subsection WHERE `subsection_name` = $sn";
/* Соединение, выбор БД */
$link mysql_connect("localhost""root""qwerty")
or die(
"Не соединилось!!!");
print 
"Соединение успешно";
mysql_select_db("books") or die("Не найдена БД");
/* Выполнение SQL запроса */
$query "SELECT subsection_name FROM subsection";
$result mysql_query($query) or die("Запрос ошибочный");
$res mysql_query($query) or die(mysql_error());
while(
$row mysql_fetch_array($res))
{
echo 
" <tr> ";

echo 
" <td>".$row['subsection_name']."</td>";
echo 
"</tr>";
}


/* Освобождение памяти, занятой результатом запроса */

mysql_free_result($result);

/* Закрытие соединения */

mysql_close($link);

?> 
</table>

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

Соединение успешно
dss

  Ответить  
 
 автор: Trianon   (22.04.2009 в 21:10)   письмо автору
 
   для: jelenad   (22.04.2009 в 21:02)
 

интересно, какой из двух написанных в коде SQL-запросов Вы считаете правильным?

  Ответить  
 
 автор: jelenad   (22.04.2009 в 23:21)   письмо автору
 
   для: Trianon   (22.04.2009 в 21:10)
 

<table border="0">
<?php
$link 
mysql_connect("localhost""root""qwerty")
or die(
"Не соединилось!!!");
print 
"Соединение успешно";
mysql_select_db("books") or die("Не найдена БД");
$sn "'" mysql_escape_string($subsection_name) . "'";
$query "SELECT * FROM subsection WHERE `subsection_name` = $sn";
$result mysql_query($query) or die("Запрос ошибочный");
while(
$row mysql_fetch_array($result))
{
echo 
" <tr> ";
echo 
" <td>".$row['subsection_name']."</td>";
echo 
"</tr>";
}
?> 
</table>

что здесь не правильно???? :(

  Ответить  
 
 автор: Trianon   (23.04.2009 в 09:02)   письмо автору
 
   для: jelenad   (22.04.2009 в 23:21)
 

>что здесь не правильно???? :(
Здесь отсутствует Ваш фрагмент (22.04.2009 в 20:22)
и поэтому оказывается неопределенной переменная $subsection_name

  Ответить  
 
 автор: jelenad   (23.04.2009 в 12:18)   письмо автору
 
   для: Trianon   (23.04.2009 в 09:02)
 

ошибка: 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 '' at line 2

<html>
<head>
<title>Поиск подраздела</title>
</head>
<body>
<table border="0">
<?php
// Соединяемся с базой данных
$hostname "localhost"// название/путь сервера, с MySQL
$username "root"// имя пользователя 
$password "qwerty"// пароль пользователя 
$dbName "books"// название базы данных
$table "subsection"// название таблицы
mysql_connect($hostname$username$password) or die ("Не могу создать соединение");
mysql_select_db($dbName) or die (mysql_error());
$query "SELECT * FROM $table 
WHERE `subsection_name` = 
$sn";
$sn "'" mysql_escape_string($subsection_name) . "'"
$res mysql_query($query) or die(mysql_error());
while(
$row mysql_fetch_array($res))
{
echo 
" <tr> ";
echo 
" <td>".$row['subsection_name']."</td>";
echo 
"</tr>";


?> 
</table>
</body>
</html> 

  Ответить  
 
 автор: Trianon   (23.04.2009 в 14:05)   письмо автору
 
   для: jelenad   (23.04.2009 в 12:18)
 

<html>
<head>
<title>Поиск подраздела</title>
</head>
<body>
<?php
error_reporting
(E_ALL);
// Соединяемся с базой данных
$hostname "localhost"// название/путь сервера, с MySQL
$username "root"// имя пользователя 
$password "qwerty"// пароль пользователя 
$dbName "books"// название базы данных
$table "subsection"// название таблицы
mysql_connect($hostname$username$password) or die ("Не могу создать соединение");
mysql_select_db($dbName) or die (mysql_error());

if (empty(
$_POST['subsection_name']))
  die (
"Не все данные введены.<br>
    Пожалуйста, вернитесь назад и закончите ввод"
);
$subsection_name=$_POST['subsection_name'];

$sn "'" mysql_escape_string($subsection_name) . "'"
$query "SELECT * FROM $table 
   WHERE `subsection_name` = 
$sn";

$res mysql_query($query) or die(mysql_error());

echo 
'<table border="0">';
while(
$row mysql_fetch_array($res))
{
  echo 
" <tr> ";
  echo 
" <td>".$row['subsection_name']."</td>";
  echo 
"</tr>";

echo 
"</table>";

?> 

</body>
</html> 

  Ответить  
 
 автор: jelenad   (23.04.2009 в 14:08)   письмо автору
 
   для: Trianon   (23.04.2009 в 14:05)
 

выдает туже ошибку в синтаксе


ошибка: 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 '' at line 2

  Ответить  
 
 автор: Trianon   (23.04.2009 в 14:17)   письмо автору
 
   для: jelenad   (23.04.2009 в 14:08)
 

Еще разок возьмите код. Я исправил кое-что.

  Ответить  
 
 автор: jelenad   (23.04.2009 в 14:29)   письмо автору
 
   для: Trianon   (23.04.2009 в 14:17)
 

вроде работает
но если мы вводим например название которого нет в колонке то тогда он не выдаёт ответ: такой записи нету.... как ето сделать???

  Ответить  
 
 автор: jelenad   (23.04.2009 в 14:51)   письмо автору
 
   для: Trianon   (23.04.2009 в 14:17)
 

у меня проблемка если я хочу добавить в колонку что то на русском языке то он мне выдаёт ошибку
Connected successfully
Ошибка при выполнении запроса
INSERT INTO subsection (subsection_name) VALUES ('спр')
Incorrect string value: '\xF1\xEF\xF0' for column 'subsection_name' at row 1

и если я задаю на поиск в колонке и ввожу русские слова для поиска он тоже ругается
Illegal mix of collations (cp1251_general_ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation '='

  Ответить  
 
 автор: Trianon   (23.04.2009 в 15:08)   письмо автору
 
   для: jelenad   (23.04.2009 в 14:51)
 

нужно задавать кодировку клиента при работе с БД
mysql_query('SET NAMES 'cp1251');
после выбора БД mysql_select_db(...)

  Ответить  
 
 автор: jelenad   (23.04.2009 в 15:41)   письмо автору
 
   для: Trianon   (23.04.2009 в 15:08)
 

mysql_query("SET CHARACTER SET 'cp1251'", $link); я так добавила у меня он выполняет запрос н добавлениезаписи в колонку но при просмотре содержимого в базе данных вместо этого слова там: ёрьшЭ хотя я вводила слово "самит"
html>
<?php
    $link 
mysql_connect("localhost""root""qwerty")
        or die(
"Could not connect: " mysql_error());
    print (
"Connected successfully <br>");
    
?>
<head>
<title>Программа добавления нового подраздела(файл insert_subsection.php)</title>
</head>
<body>
<?php
if (empty($_POST['subsection_name']))
  die (
"Не все данные введены.<br>
      Пожалуйста, вернитесь назад и закончите ввод"
);

$subsection_name $_POST['subsection_name'];
$subsection_name trim $subsection_name ); 
$subsecton_name addslashes $subsection_name ); 
$db "books";
if ( !
$link ) die ("Невозможно подключение к MySQL");
mysql_select_db $db ) or die ("Невозможно открыть $db");
mysql_query("SET CHARACTER SET 'cp1251'"$link);
$query "INSERT INTO subsection (subsection_name) VALUES ('".$subsection_name."')"
$result mysql_query $query );
if (
$result) echo "Подраздел добавлен в базу данных.";
else echo 
"Ошибка при выполнении запроса <br>$query<br>"mysql_error();
    
?>
</body>
</html>

  Ответить  
 
 автор: Trianon   (23.04.2009 в 15:11)   письмо автору
 
   для: jelenad   (23.04.2009 в 14:51)
 

$res = mysql_query($query) or die(mysql_error());

if(mysql_num_rows($res) == 0)
    echo 'нет такой записи';
else
{
  echo '<table border="0">';
  while($row = mysql_fetch_array($res))
  {
    echo " <tr> ";
    echo " <td>".$row['subsection_name']."</td>";
    echo "</tr>";
  } 
  echo "</table>";
}

  Ответить  
 
 автор: jelenad   (23.04.2009 в 15:47)   письмо автору
 
   для: Trianon   (23.04.2009 в 15:11)
 

если спрашиваю на поиск англ буквами той записи которой нет в колонке работает а вот если пищу русскими то он все рано ругается :( Illegal mix of collations (cp1251_general_ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation '='


<html>
<head>
<title>Поиск подраздела</title>
</head>
<body>
<?php
error_reporting
(E_ALL);
// Соединяемся с базой данных
$hostname "localhost"// название/путь сервера, с MySQL
$username "root"// имя пользователя 
$password "qwerty"// пароль пользователя 
$dbName "books"// название базы данных
$table "subsection"// название таблицы
mysql_connect($hostname$username$password) or die ("Не могу создать соединение");
mysql_select_db($dbName) or die (mysql_error());
mysql_query("SET CHARACTER SET 'cp1251'"$link);
if (empty(
$_POST['subsection_name']))
die (
"Не все данные введены.<br>
Пожалуйста, вернитесь назад и закончите ввод"
);

$subsection_name=$_POST['subsection_name'];
$sn "'" mysql_escape_string($subsection_name) . "'"

$query "SELECT * FROM $table 
WHERE `subsection_name` = 
$sn";

$res mysql_query($query) or die(mysql_error());
if(
mysql_num_rows($res) == 0)
    echo 
'нет такой записи';
else


echo 
'<table border="0">';
while(
$row mysql_fetch_array($res))
{
  echo 
" <tr> ";
  echo 
" <td>".$row['subsection_name']."</td>";
  echo 
"</tr>";


echo 
"</table>";
}

?> 

</body>
</html>  

  Ответить  
 
 автор: Trianon   (23.04.2009 в 17:03)   письмо автору
 
   для: jelenad   (23.04.2009 в 15:47)
 

mysql_query("SET CHARACTER SET 'cp1251'", $link);

Откуда взялась переменная $link?

  Ответить  
 
 автор: jelenad   (23.04.2009 в 17:39)   письмо автору
 
   для: Trianon   (23.04.2009 в 17:03)
 

хорошо теперь всё нормально когда я удалила $link
но проблема в mysql осталась когда я в mysql задаю select subsecion_name from subsection; то он показывает всё равно не корректно введенные слова ??? вроде бы всё правильно с в mysql нет

html>
<?php
    $link 
mysql_connect("localhost""root""qwerty")
        or die(
"Could not connect: " mysql_error());
    print (
"Connected successfully <br>");
    
?>
<head>
<title>Программа добавления нового подраздела(файл insert_subsection.php)</title>
</head>
<body>
<?php
if (empty($_POST['subsection_name']))
  die (
"Не все данные введены.<br>
      Пожалуйста, вернитесь назад и закончите ввод"
);

$subsection_name $_POST['subsection_name'];
$subsection_name trim $subsection_name ); 
$subsecton_name addslashes $subsection_name ); 
$db "books";
if ( !
$link ) die ("Невозможно подключение к MySQL");
mysql_select_db $db ) or die ("Невозможно открыть $db");
mysql_query("SET CHARACTER SET 'cp1251'");
$query "INSERT INTO subsection (subsection_name) VALUES ('".$subsection_name."')"
$result mysql_query $query );
if (
$result) echo "Подраздел добавлен в базу данных.";
else echo 
"Ошибка при выполнении запроса <br>$query<br>"mysql_error();
    
?>
</body>
</html>

  Ответить  
 
 автор: Trianon   (23.04.2009 в 18:25)   письмо автору
 
   для: jelenad   (23.04.2009 в 17:39)
 

Вероятно, слова заносились тогда, когда SET NAMES 'cp1251' еще не был выполнен.

  Ответить  
 
 автор: jelenad   (23.04.2009 в 18:36)   письмо автору
 
   для: Trianon   (23.04.2009 в 18:25)
 

да нет и после таже проблема

  Ответить  
 
 автор: Trianon   (23.04.2009 в 18:38)   письмо автору
 
   для: jelenad   (23.04.2009 в 18:36)
 

какая кодировка у БД?
Какая кодировка у таблицы?

  Ответить  
 
 автор: jelenad   (23.04.2009 в 19:01)   письмо автору
 
   для: Trianon   (23.04.2009 в 18:38)
 

а как это узнать??

  Ответить  
 
 автор: Trianon   (23.04.2009 в 19:13)   письмо автору
 
   для: jelenad   (23.04.2009 в 19:01)
 

SHOW CREATE DATABASE ИмяБД;


SHOW CREATE TABLE ИмяТаблицы;

  Ответить  
 
 автор: jelenad   (23.04.2009 в 20:07)   письмо автору
 
   для: Trianon   (23.04.2009 в 19:13)
 


SHOW CREATE DATABASE ИмяБД;

default character set cp1251


SHOW CREATE TABLE ИмяТаблицы;
default character set cp1251

  Ответить  
 
 автор: Trianon   (23.04.2009 в 20:39)   письмо автору
 
   для: jelenad   (23.04.2009 в 20:07)
 

>когда я в mysql задаю select subsecion_name from subsection;

Что значит "задаю в mysql" ?

  Ответить  
 
 автор: jelenad   (23.04.2009 в 21:39)   письмо автору
 
   для: Trianon   (23.04.2009 в 20:39)
 

я имела ввиду когда я хочу просмотреть какие записи есть в определенной таблице

  Ответить  
 
 автор: Trianon   (23.04.2009 в 21:49)   письмо автору
 
   для: jelenad   (23.04.2009 в 21:39)
 

и что Вы при этом делаете?

  Ответить  
 
 автор: jelenad   (22.04.2009 в 20:55)   письмо автору
 
   для: Trianon   (22.04.2009 в 20:33)
 

чего то у меня не получается :(

  Ответить  
Rambler's Top100
вверх

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