|
|
|
| Доброго всем дня!
У меня раньше стоял PHP 4 все было нормально, когда поставил себе PHP 5 как модуль Apache, случилось следующее:
Перестали работать запросы вида:
$res = mysql_query("SELECT * FROM `talbe` WHERE `var` = '".$_POST['value']."'");
if (mysql_num_rows($res) {
...
|
$_POST['value'] - это переменная введенная с формы.
Если $_POST['value'] - Содержит русский текст, то скрипт ругается - Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource
Если $_POST['value'] - Содержит английский текст то все ок.
Не пойму в чем проблема, раньше все работало. Возможно кто-то знает в чем проблема.
За ранее благодарен. | |
|
|
|
|
|
|
|
для: B@cZ
(12.10.2006 в 17:54)
| | перед if (mysql_num_rows($res) неплохо было бы проверять сам $res:
$sql = "SELECT * FROM `talbe` WHERE `var` = '".$_POST['value']."'"
$res = mysql_query($sql);
if(!$res) die("Error in $sql: " . mysql_error());
if (mysql_num_rows($res) {
....
|
| |
|
|
|
|
|
|
|
для: B@cZ
(12.10.2006 в 17:54)
| |
Error in SELECT * FROM `talbe` WHERE `var` = 'Тест': Illegal mix of collations (cp1251_general_ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation '='
|
Вот такую ошибку выдает... как с ней бороться? Кто подскажет? ) | |
|
|
|
|
|
|
|
для: B@cZ
(12.10.2006 в 18:12)
| | Это следствие того, что Вы не[правильно] указываете кодовую страницу для соединения с сервером. Похоже, данные в таблице лежат в 1251, а Вы обращаетесь без установки кодовой страницы, и как следствие, все Ваши запросы считаются написанными в latin1.
Самый простой способ - сразу после соединения с сервером выдавать запрос
mysql_query("SET NAMES '1251'");
|
| |
|
|
|
|
|
|
|
для: B@cZ
(12.10.2006 в 17:54)
| | А где это поменять в настройках MySQL иди PHP5, чтобы каждый раз лишний запрос не делать? ) | |
|
|
|
|
|
|
|
для: B@cZ
(12.10.2006 в 19:46)
| | директива
[mysqld]
init-connect="SET NAMES cp1251"
|
в конфиг-файле MySQL
Работать будет только для соединений, установленных пользователем, отличным от root. | |
|
|
|