|
|
|
| Я не знал куда разместить эту тему, решил постить в PHP.
Написал грабер для DLE, но по не опытности не смог полностью завернуть кавычки в Html,
и по этой причине решил использовать DbSimple.
Но в базе вместо русских букв оказались вопросики ????????????????????
require_once "DbSimple/Generic.php";
// Устанавливаем соединение.
$DB = DbSimple_Generic::connect("mysql://Логин:Пароль@Хост/База");
// Вот так выглядит запрос
$date = date("Y-m-d H:i:s");
$translit = GotoTranslit($nazvanie);
$DB->query('INSERT INTO `dke_post` (`id`,
`autor`,
`date`,
`short_story`,
`full_story`,
`xfields`,
`title`,
`descr`,
`keywords`,
`category`,
`alt_name`,
`comm_num`,
`allow_comm`,
`allow_main`,
`allow_rate`,
`approve`,
`fixed`,
`rating`,
`allow_br`,
`vote_num`,
`news_read`,
`votes`,
`access`,
`symbol`,
`flag`,
`editdate`,
`editor`,
`reason`,
`view_edit`,
`tags`,
`metatitle`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)',
NULL, 'dll', $date, $krat, $full, '', $nazvanie, '', '', $categor, $translit, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, '', '', 1, '', '', '', 0, '', '');
|
Пробовал отдельно выносить перемеренные, и руками задавать им значение всё равно вопросики.
$krat,$full - содержит Html
В чём может быть проблема? | |
|
|
|
|
|
|
|
для: Qwestxf
(11.05.2009 в 21:04)
| | А какая кодирофка?
После
require_once "DbSimple/Generic.php";
|
пропишите mysql_query("SET NAMES 'cp1251'");
Это если windows-1251, если утф, то utf-8 попробуйте | |
|
|
|
|
|
|
|
для: admiral
(11.05.2009 в 21:16)
| | Спасибо заработало.
Изначально я подключался в db вот так.
<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_secrets = "localhost";
$database_secrets = "";
$username_secrets = "";
$password_secrets = "";
$secrets = mysql_pconnect($hostname_secrets, $username_secrets, $password_secrets) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_select_db ($database_secrets);
mysql_query("set names cp1251");
global $_CONFIG;
$_CONFIG["db"] = "mysql://".$username_secrets.":".$password_secrets."@localhost/".$database_secrets;
require("Generic.php");
$DB = DbSimple_Generic::connect($_CONFIG["db"]);
?>
|
Были вопросики, в чём разница понять не могу? | |
|
|
|
|
|
|
|
для: Qwestxf
(11.05.2009 в 21:27)
| | Разница в том, что вы сначала открываете одно соединение с БД, а потом его перебиваете другим. Зачем это делать абсолютно неясно. | |
|
|
|
|
|
|
|
для: Qwestxf
(11.05.2009 в 21:04)
| | У вас данные для вставки из формы приходят?
Если та, то такой запрос довольно нелогичен. Лучше воспользоваться плейсхолдерами массивов. Т.е. вставку делать:
$DB->query('INSERT INTO `dke_post` SET ?a',$data);
|
Где массив $data - массив с данными, приходящими от формы (почищенный $_POST)
Для удобства можно называть поля формы так же как соответствующие поля таблицы в БД и автоматически чистить приходящий $_POST массив сравнивая его ключи с результатом работы функции mysql_list_fields() или запроса SHOW COLUMNS
Тогда вставка будет совсем простой:
$data = $DB->prepareData('dke_post',$_POST);
$DB->query('INSERT INTO `dke_post` SET ?a',$data);
|
PS метод prepareData надо написать самому. Что-то типа:
<?
function prepareData($table,$data){
$list = $this->select('SHOW COLUMNS FROM ?t',$table);
$ret = array();
foreach($list as $k=>$item){
$fname = $item['Field'];
if(in_array($fname,array_keys($data))) $ret[$fname] = $data[$fname];
}
return $ret;
}
?>
|
| |
|
|
|
|