Я использую этот метод, чтобы вставить данные в моей базе данных:print_r PHP PDO вставки заявление
function insertMenue($content, $date) {
$session = $_SESSION['aid'];
global $pdo;
$pdo->exec('SET CHARACTER SET utf8');
$query = $pdo->prepare('INSERT INTO menue(type, content, date, creator) VALUE (?,?,?,?)');
$query->bindValue(1, "menue");
$query->bindValue(2, "<p>" . $content . "</p>");
$query->bindValue(3, $date);
$query->bindValue(4, $session);
$query->execute();
}
Я звоню этот метод для каждого объекта в массиве. Теперь каждый раз, когда должна быть строка, содержащая умляут (ä, ö, ü), строка обрезается там, где должен быть умлаут.
Как, например, я пишу:
<p>Salat<br>Gemüse und Teigwaren</p>
Данные в базе данных случается просто:
<p>Salat<br>Gem
Теперь вопрос:
Как может I print_r() весь оператор sql?
print_r ($ query-> execute());
отображать ли (1,1,1,1)
и я хочу что-то вроде: (Menue, (р) Salat (ш) Gemüse унд Teigwaren (/ р), 2015-09 -06, 2)
Я не уверен, что он не попадает в базу данных или проблема с базой данных. Сам db может обрабатывать умлаут и записывается в utf-8. Я сбросил файл и внимательно посмотрел на него, он не должен быть поврежден.
Вы можете напечатать '$ date' и' $ session', прежде чем он попадает в SQL block - но посмотрите на документацию для PHP PDO- http://php.net/manual/en/pdostatement.bindvalue.php - попробуйте указать тип, который вы хотите вставить (например, '$ query-> bindValue (1, «menue», PDO :: PARAM_STR); ' – doublesidedstickytape
Если вы используете истинные подготовленные операторы прямо к базе данных, нет« цельного заявления ». У вас есть запрос с заполнителем s, и у вас есть свои ценности. Проблема почти наверняка связана с проблемой кодирования, вы фактически не отправляете кодированные данные UTF-8 в базу данных. – deceze