MYSQLi Prepared Statements Schreiben nur ý

NoUse4aNick

Mitglied
Hallo Community,

Habe bereits gegoogelt und einige leute auf den Code Schauen lassen, allerdigns findet keiner meinen Fehler.

Ich wollte eigenltich nur ein Simples Insert into Script Machen um später das ganze in OOP realisieren zu können allerdings scheitert es hier bereits.

Der Code:
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>

	<title>webGallery - Neue Kategorie erstellen</title>
</head>
<body>
<?php

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

$myName = $_GET['CatName'];
$myDesc = $_GET['CatDesc'];
var_dump($myName);
var_dump($myDesc);

//Im originalQuelltext sind die Klammern mit Werten gefüllt natürlich
$db = @new mysqli('','','','');
if (mysqli_connect_errno()) {
    die ('Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysqli_connect_errno().')');
}

$sql = "INSERT INTO webGallery_Category (CatName, CatDesc) VALUES (?, ?)";

$stmt = $db->prepare($sql);
if (!$stmt) {
    die ('Es konnte kein SQL-Query vorbereitet werden: '.$db->error);
}

//Beide Vardumps liefern Korrekte Ergebnisse
//var_dump($sql, $stmt, $myName, $myDesc);
$stmt->bind_param('ss', $myName, $myDesc);
//var_dump($sql, $stmt, $myName, $myDesc);

if (!$stmt->execute()) {
  die ('Query konnte nicht ausgeführt werden: '.$stmt->error);
  }
// Pruefen ob der Eintrag efolgreich war
if($stmt->affected_rows == 1) {
   echo 'Der neue Eintrage wurde hinzugef&uuml;gt.';
   }
else {
   echo 'Der Eintrag konnte nicht hinzugef&uuml;gt werden.';
   }

$stmt->close();

$sql = "SELECT * FROM webGallery_Category";
$result = $db->query($sql);

while ($row = $result->fetch_assoc()) {
    var_dump($row);
    echo "<br />";
}

$db->close();

?>
</body>
</html>

Der Select Befehl gibt zurück:
Code:
array(3) { ["ID"]=>  string(1) "5" ["CatName"]=>  string(0) "" ["CatDesc"]=>  string(1) "ý" }

das einzige Was sich hierbei ändert sind die Id's da sie in der SQL Tabelle auf Auto Increment Stehen.

Hier noch ein Vardump vom Tabellen Aufbau(SQL EXPLAIN table):
PHP:
array(6) { ["Field"]=>  string(2) "ID" ["Type"]=>  string(16) "int(11) unsigned" ["Null"]=>  string(0) "" ["Key"]=>  string(3) "PRI" ["Default"]=>  NULL ["Extra"]=>  string(14) "auto_increment" } 

array(6) { ["Field"]=>  string(7) "CatName" ["Type"]=>  string(11) "varchar(50)" ["Null"]=>  string(0) "" ["Key"]=>  string(0) "" ["Default"]=>  string(0) "" ["Extra"]=>  string(0) "" } 

array(6) { ["Field"]=>  string(7) "CatDesc" ["Type"]=>  string(12) "varchar(255)" ["Null"]=>  string(0) "" ["Key"]=>  string(0) "" ["Default"]=>  string(0) "" ["Extra"]=>  string(0) "" }

Wäre für Hilfen Sehr dankbar da ich wirklich nicht sehe was falsch ist.

Liebe Grüße
NoUse4aNick
 
Also dein Script funktioniert bei mir hervorragend. ;) Hilft dir jetzt erstmal nicht weiter, schon klar.

Ich würde jetzt erstmal anfangen zu schauen, ob überall das Encoding passt. "ý" ist so ein Zeichen, dass auf falsches Encoding hindeutet imo. Seltsam ist auch, dass der CatName gar nicht in die Datenbank kommt.

Welche PHP Version benutzt du denn? Zum Vergleich: ich habe 5.3.1 verwendet.
Hattest du schonmal bei anderen Statements Probleme mit MySQLi?
 
Hallo,

Auf dem Server läuft gerade Php Version 5.2.11 (Stable) Latest ist aber auch dabei.
MySQL-Client-Version: 5.0.84

MySQL-Zeichensatz: UTF-8 Unicode (utf8)
Zeichensatz / Kollation der MySQL-Verbindung: utf8_unicode_ci

Tabellen Kollationen: utf8_unicode_ci

Nein ich hatte noch nie Probleme mit Mysqli Statements und hab auch eigentlich schon an mir selbst gezweifelt weil ich keine Fehler gefunden habe, allerdings habe icha uf diesem Server noch nie gearbeitet...

Seltsamerweise Schreibt ein Insert into mit Fixen Werten das korrekte ergebnis in die Tabelle.

Edit: Habe Soeben den Charset auf UTF8 umgestellt über
PHP:
if (!$db->set_charset("utf8")) {
            die("Error loading character set utf8: ".$db->error);
        }

Bekomme nun aber in beide Spalten nichts geschrieben. Die Alten geschriebenen ý sind jetzt beim auslesen ý...
 
Zuletzt bearbeitet:
Und mysqli_character_set_name() , gibt dir das auch UTF8 aus?

Warum ich frage: du hast da zwar geschrieben:
MySQL-Zeichensatz: UTF-8 Unicode (utf8)
Zeichensatz / Kollation der MySQL-Verbindung: utf8_unicode_ci

Tabellen Kollationen: utf8_unicode_ci

..das scheinen mir aber Informationen us PHPMyAdmin zu sein. Das bedeutet nicht gezwungenermaßen, dass die Verbindung in deinem Skript unter den selben Bedingungen läuft.
 
Zurück