[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Работа с MySQL
mixer
Помогите разобраться как добавить данные в MySQL.
Вот код:

<?
function
det_l($ch)
{

$rus_c = array("а","б","в","г","д","е","ё","ж","з","и","й","к","л","м", "н","о","п","р","с","т","у","ф","х","ц","ч","ш","щ","ъ"," ы","ь","э","ю","я","А","Б","В","Г","Д","Е","Ё","Ж","З","И","Й","К","Л","М","Н","О","П","Р","С","Т","У","Ф","Х","Ц","Ч","Ш","Щ","Ъ","Ы","Ь","Э","Ю ","Я");
$eng_c = array("a","b","c","d","e","f","h","i","j","k","l","m","n", "o","p","q","r","s","t","u","v","w","x","y","z","A","B"," C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");
$eng_len=count($eng_c);
$rus_len=count($rus_c);

for($i=0;$i<$eng_len;$i++)
if($eng_c[$i]==$ch)
$lang = 1;

for($i=0;$i<$rus_len;$i++)
if($rus_c[$i]==$ch)
$lang = 2;

if ($lang == 1)
return 1;
else
return
2;

}

function in_arr($ch)
{

$rus_c = array("а","б","в","г","д","е","ё","ж","з","и","й","к","л","м","н","о","п","р","с","т","у","ф","х","ц","ч","ш","щ","ъ"," ы","ь","э","ю","я","А","Б","В","Г","Д","Е","Ё","Ж","З","И","Й","К","Л","М","Н","О","П","Р","С","Т","У","Ф","Х","Ц",& ;quo t;Ч","Ш","Щ","Ъ","Ы","Ь","Э","Ю ","Я");
$eng_c = array("a","b","c","d","e","f",","h","i","j","k","l","m","n", "o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q" ,"R","S","T","U","V","W","X","Y","Z");
$eng_len=count($eng_c);
$rus_len=count($rus_c);

for($i=0;$i<$eng_len;$i++)
if($eng_c[$i]==$ch)
$yn = 1;

for($i=0;$i<$rus_len;$i++)
if($rus_c[$i]==$ch)
$yn = 1;

if ($yn == 1)
return 1;
else
return
0;

}

$db_host = 'localhost';
$db_user = 'root';
$db_pass = '1';
$db_database = 'word';
$link = mysql_connect($db_host,$db_user,$db_pass);
mysql_select_db($db_database,$link);

$max_theme = 0;
$max_word = 0;

$query = ("SELECT * FROM themes");
$result = mysql_query($query);
while($res = mysql_fetch_row($result))
{
if($max_theme<$res[0])
$max_theme=$res[0];
}

$query = ("SELECT * FROM words");
$result = mysql_query($query);
while($res = mysql_fetch_row($result))
{
if($max_word<$res[0])
$max_word=$res[0];
}

$max_word++;
$max_theme++;
$num_insert = 0;
$less_num = 1;

$f = fopen("base.txt","r");
while(!feof($f))
{
$str = fgets($f);
$str_len = strlen($str);

unset($e_f);
unset($e_l);
unset($r_f);
unset($r_l);
$e_w="";
$r_w="";

for($i=0;$i<$str_len;$i++)
{
if(in_arr($str[$i])==1)
{
if(det_l($str[$i])==1)
if(isset($e_f)==false)
{
$e_f = $i;
$e_l = $i;
}
else
$e_l = $i;

if(det_l($str[$i])==2)
if(isset($r_f)==false)
{
$r_f = $i;
$r_l = $i;
}
else
$r_l = $i;
}

}


for($i=$e_f;$i<=$e_l;$i++)
$e_w = $e_w.$str[$i];

for($i=$r_f;$i<=$r_l;$i++)
$r_w = $r_w.$str[$i];

[
color=red]mysql_query("insert into words values($max_word,'$e_w','$r_w',$max_theme)");[/color]
$max_word++;

}

?>

Обьясните пожалуйста кто-нибудь, почему не работает строка выделенная красным.Вроде все правильно, проблема какая-то в переменных $e_w,$r_w.
когда присваиваю значения вручную, допустим $e_w = "string" и $r_w = "строка",то все ок,добавляет,а так нет(Help me please...



Спустя 3 минуты, 17 секунд (23.01.2011 - 18:41) inpost написал(а):
Загляни ко мне в подписи, особенно последнюю, там как правильно делать записи в запросах. У тебя в БД сейчас заносится такой текст: "$r_w", а вывод переменных надо обрамлять.

Спустя 3 минуты, 17 секунд (23.01.2011 - 18:45) Xpund написал(а):
'".$r_w."'
Что то в этом роде должно быть =)

Спустя 7 минут, 1 секунда (23.01.2011 - 18:52) mixer написал(а):
Изменил на

mysql_query("insert into words values($max_word,".$ew.",".$rw.",$max_theme)");

ничего не добавляет(Не пойму в чем дело.

Спустя 2 минуты, 55 секунд (23.01.2011 - 18:55) mixer написал(а):
Хотя если изменить на такое:

$e_w = "gfd";
$r_w = "fds";

mysql_query("insert into words values($max_word,'$e_w','$r_w',$max_theme)");

то добавляет в базу.Такое ощущение, что проблема в $e_w и $r_w, хотя какая там проблема может быть не пойму, строка и строка.

Спустя 6 минут, 23 секунды (23.01.2011 - 19:01) inpost написал(а):
mixer
Текст надо брать в одинарные кавычки дополнительно!

Спустя 6 минут, 1 секунда (23.01.2011 - 19:07) mixer написал(а):
Если я правильно понял то так:

mysql_query("insert into words values($max_word,".'$e_w'.",".'$r_w'.",$max_theme)");


Так тоже не работает(

Спустя 1 минута, 36 секунд (23.01.2011 - 19:09) inpost написал(а):

Спустя 7 минут, 47 секунд (23.01.2011 - 19:16) mixer написал(а):
mysql_query("insert into words values(".$max_word.",'".$e_w."','".$r_w."',".$max_theme.")");


Не работает тоже, все как в инструкции

Спустя 6 минут, 31 секунда (23.01.2011 - 19:23) inpost написал(а):
mysql_query("
INSERT INTO `words` SET
`text` = '"
.$text."'
"
);


вот так сделай

Спустя 11 минут, 39 секунд (23.01.2011 - 19:35) mixer написал(а):
mysql_query("insert into `words` SET
`word_code` = '"
.$max_word."',
`e_word` = '"
.$e_w."',
`r_word` = '"
.$r_w."',
`theme_code` = '"
.$max_theme."'");


И так не хочет(

Спустя 1 минута, 12 секунд (23.01.2011 - 19:36) inpost написал(а):
mysql_query("insert into `words` SET
`word_code` = '"
.$max_word."',
`e_word` = '"
.$e_w."',
`r_word` = '"
.$r_w."',
`theme_code` = '"
.$max_theme."'") or die(mysql_error());

пишется ошибка?

Спустя 11 минут, 7 секунд (23.01.2011 - 19:47) mixer написал(а):
Выдает следующее:

Incorrect string value: '\xE3\xEB\xE0\xE2\xED\xFB...' for column 'r_word' at row 1

Ничего не пойму, там буквы должны быть huh.gif

Спустя 3 минуты, 28 секунд (23.01.2011 - 19:50) inpost написал(а):
mysql_real_escape_string($text) - попробуй так.
или просто выведи содержимое: echo $r_w, и посмотри, что внутри.

Спустя 7 минут, 58 секунд (23.01.2011 - 19:58) mixer написал(а):
echo $r_w и echo $e_w выводит все правильно все слова.При желании можно вывести их в таблицу и все правильно отображается.

Кстати если написать такую строчку

mysql_query("insert into words values($max_word,'".$e_w."','f',$max_theme)");


то он вводит английское слово хранящееся в $e_w, а вместо русского f

Спустя 4 минуты, 35 секунд (23.01.2011 - 20:03) mixer написал(а):
Так работает:

$r_w='gffd';

mysql_query("insert into words values($max_word,'".$e_w."','".$r_w."',$max_theme)");


А так нет:

$r_w='авы';

mysql_query("insert into words values($max_word,'".$e_w."','".$r_w."',$max_theme)");

Спустя 7 минут, 10 секунд (23.01.2011 - 20:10) Xpund написал(а):
А с кодировкой в базе у вас всё в порядке?

Спустя 8 минут, 44 секунды (23.01.2011 - 20:19) mixer написал(а):
В базе utf-8.

mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");


я еще эту строчку добавил, все тоже самое, безрезультатно.Может что то другое сделать нужно?)

Страница тоже теперь в utf-8,была в latin1.Но все безрезультатно.

Спустя 2 часа, 20 минут, 26 секунд (23.01.2011 - 22:39) mixer написал(а):
Помогите кто знает что не так с кодировкой(

Если в консоли ввести

show variables likechar%


то там везде utf-8, страница в utf-8

в скрипте добавил эти строки

mysql_query ("SET CHARACTER SET 'utf8'", $link); 
mysql_query ("set character_set_client='utf8'");
mysql_query ("set character_set_results='utf8'");
mysql_query ("set collation_connection='utf8_general_ci'");
mysql_query ("SET NAMES utf8");

setlocale (LC_CTYPE, 'ru_RU.utf8');


Но все не так(Вместо русского Евгений, ромбики,цифры какие-то, ужас(

Спустя 6 минут, 5 секунд (23.01.2011 - 22:45) inpost написал(а):
В документе кодировку пишешь через header, прописываешь в meta, потом открываешь через Дримвейвер - правой кнопкой по центру экрана - свойства страницы - кодировки - ЮТФ-8 - RELOAD & ok.

Спустя 14 минут, 22 секунды (23.01.2011 - 23:00) mixer написал(а):
Спасибо всем, дело было в кодировке, без вашей помощи еще очень долго бы сидел:)СПАСИБО:)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.