MySQL veritabanı içine doğru değerleri ekleme değil

2 Cevap php

Ben bir veritabanına değerleri eklemek için mysqli kullanarak bazı sorun yaşıyorum. Ben herhangi bir hata alamadım, ama sokulan değerlerin hiç doğru değil. METİN alanlardan biri her zaman boştur, ve diğeri her zaman değer "y" vardır. INT alanı her zaman değerini 50396416 içerir. Ben utf8_general_ci kullanıyorum.

CREATE TABLE events (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    title TEXT NOT NULL ,
    content TEXT NOT NULL ,
    date INT UNSIGNED NOT NULL
);

Burada değerler eklemek için ne var:

function insertEvent($title, $content, $date) {

    $stmt = $this->db->prepare('INSERT INTO events (title, content, date) VALUES (?, ?, ?)');

    $stmt->bind_param('ssi', $title, $content, $date);
    $stmt->execute();

    $stmt->close();
}

Bu oldukça basit görünüyor, bu yüzden sorun ne olabilir bilmiyorum. Eğer herhangi bir tavsiye varsa, bunu duymak isteriz!

Her şey başka bir tek sunucuda düzgün çalışmayabilir, ama yoktu çünkü ben, bu benim kod ile ilgili bir sorun olabilir eğer biliyor, ya da veritabanı ile değil.

Update

Aslında ben sadece sunucular farklı MySQL sürümlerini kullanıyor görünüyor ki, phpinfo() ile, fark ettim. Bu muhtemelen soruna neden olabilir mi?

Ben de kullanıyorum verilerin doğru olduğunu eminim. I $_POST kullanarak bir form değerleri alıyorum. Örneğin, "title" alanı için, ben "asdf" girin, eğer:

$stmt->bind_param('ssi', $title, $content, $date);
$title = $_POST['title'];
echo $title; // echoes "asdf"

It looks like it was just an incompatibility with the MySql version (4.something) on the server. I got them to update it, and it seems to work fine now. Thanks everyone, for helping!

2 Cevap

Bir hata ayıklayıcı kullanabilirsiniz (örneğin, xdebug + netbeans önyüz olarak) veya biraz daha hata ayıklama çıktı ekleme ya.

echo "<pre>Debug: $stmt->bind_param('ssi', $title, $content, $date);\n</pre>";
$stmt->bind_param('ssi', $title, $content, $date);
$stmt->execute();

Bu deneyin:

$stmt = $this->db->prepare("INSERT INTO events (title, content, date) VALUES ('?', '?', '?')");