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

Форум MySQL

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

 

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

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

тема: MySQL выдаёт сообщение об ошибке помогите, plizzz?
 
 автор: webzorb   (24.11.2006 в 09:01)   письмо автору
 
 

Здравствуйте!
Подскажите, пожалуйста, решение.

Код обработчика


<?php
  session_start
();
  if(isset(
$_POST['searchterm']))
      
$_SESSION['searchterm'] = $_POST['searchterm'];
  
$searchterm $_SESSION['searchterm'];

ini_set('display_errors',1);
error_reporting(E_ALL);


if (!(
$conn_id = @mysql_connect("localhost""root""webwizard")))
    die (
"Cannot connect to server<br>");
if (!@
mysql_select_db("pprr"$conn_id))
    die (
"Cannot select database<br>");


if (isset(
$_GET['page'])) $page=($_GET['page']-1); else $page=0;

$start=abs($page*$per_page);

$query "select * from sss where textname=$searchterm LIMIT $start$per_page";

$result=mysql_query($query);


echo 
'<table border="0" cellpadding="0" cellspacing="0" width="95%">';

    while(
$row=mysql_fetch_array($result))  [b]// строка 34[/b]
    
{
$url $row['linkname'];
$poisk $row['textname'];
echo 
"
<TR>
  <TD><a href = 'http://
$url' class = 'load'>$poisk</a></TD>
</TR>"
;
    }
echo 
'</table>';

$query "SELECT count(*) FROM sss where textname=$searchterm";
$result=mysql_query($query);        [b]// строка 48[/b]
$row=mysql_fetch_row($result);
$total_rows=$row[0];
$num_pages=ceil($total_rows/$per_page);

....

?>


Проблема в следующем:
если переменная $searchterm(её значение передаётся из формы) содержит только какие - либо числа, которые присутствуют в базе данных, то результат поиска выводится правильно, но если $searchterm содержит какие-либо русские слова или английские (которые тоже присутствуют в базе), то выдаётся сообщение об ошибке:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\server\newpoisk.php on line 34

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:\server\newpoisk.php on line 48

Я попробовал разобраться в чём ошибка используя:
echo mysql_errno() . ": " . mysql_error(). "\n";

Выводится следующее сообщение:
1054: Unknown column 'end' in 'where clause'
(Неизвестная строка 'end' в ...) Но end присутствует в базе данных

Вот пример таблицы:


CREATE TABLE sss
(
textname CHAR(255),
linkname CHAR(255)
);
INSERT INTO find VALUES("название статьи","ссылка на неё");
...
INSERT INTO find VALUES("555","www");
INSERT INTO find VALUES("end","www");
INSERT INTO find VALUES("555end","www");


Как исправить данную ошибку я не могу понять.
Буду очень признателен, если Вы поможете мне разобраться в этом вопросе.

   
 
 автор: Trianon   (24.11.2006 в 09:27)   письмо автору
 
   для: webzorb   (24.11.2006 в 09:01)
 

Поменяйте строку

$searchterm = $_SESSION['searchterm']; 

на

$searchterm = "'".mysql_escape_string($_SESSION['searchterm'])."'"; 

   
 
 автор: webzorb   (24.11.2006 в 11:59)   письмо автору
 
   для: Trianon   (24.11.2006 в 09:27)
 

Спасибо огромное, Trianon
Вы настоящий профессионал!

   
 
 автор: webzorb   (24.11.2006 в 19:15)   письмо автору
 
   для: Trianon   (24.11.2006 в 09:27)
 

Я изменил немного код:


<?php

if(!isset($_POST['searchterm']))
{
     if(isset(
$_GET['searchterm']))
       {

         
$searchterm "'".mysql_escape_string($_GET['searchterm'])."'";
       }
}
else
{
$searchterm "'".mysql_escape_string($_POST['searchterm'])."'";
}
...



Чтобы передавать через URL строку запроса так:


echo "<a href=".$_SERVER['PHP_SELF']."?page=$i&searchterm=$searchterm>".$i."</a>";  


Как теперь необходимо поменять это условие:
$searchterm = "'".mysql_escape_string($_SESSION['searchterm'])."'";


При таком значении $searchterm ссылка на следующую страницу выглядит так:
http://localhost/newpoisk.php?page=2&searchterm='7867'

Как избавиться от ' ' ?
Подскажите, пожалуйста.

   
 
 автор: Trianon   (24.11.2006 в 19:32)   письмо автору
 
   для: webzorb   (24.11.2006 в 19:15)
 


<?php 
  session_start
(); 
  if(isset(
$_REQUEST['searchterm'])) 
      
$_SESSION['searchterm'] = $_REQUEST['searchterm']; 
  
$searchterm $_SESSION['searchterm']; 
  
$st_sql "'".mysql_escape_string($searchterm)."'";
  
$st_ref urlencode($searchterm);

$st_sql применяете в sql-запросах
where textname=$st_sql

$st_ref применяете при формировании параметра ссылки
<a href=?page=$i&searchterm=$st_ref > $i </a>

   
 
 автор: webzorb   (25.11.2006 в 07:16)   письмо автору
 
   для: Trianon   (24.11.2006 в 19:32)
 

Спасибо огромное, Trianon
Всё работает как часики!

   
Rambler's Top100
вверх

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