Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: MySQL-tietokantaan ei voida lisätä dataa

Sivun loppuun

Macro [01.05.2010 13:03:13]

#

Hei!

Minulla on tietokanta, jossa on taulu X ja sarakkeet Z ja Y. Koitan lisätä mysql_query()-funktiolla tietoa tauluun, mutta vain Z-sarakkeen tiedot menevät. Y-sarakkeeseen menevä tieto on vähän eriskummallisen muotoista:

array(20) {
  [0]=>
  array(3) {
    ["Something"]=>
    float(543)
    ["Something2"]=>
    float(454)
    ["Something3"]=>
    float(433)
  }
  [1]=>
  array(3) {
    ["Something"]=>
    float(814)
    ["Something2"]=>
    float(681)
    ["Something3"]=>
    float(649)
  }
  [2]=>
  array(3) {
    ["Something"]=>
    float(1221)
    ["Something2"]=>
    float(1021)
    ["Something3"]=>
    float(974)
  }
  [3]=>
  array(3) {
    ["Something"]=>
    float(1832)
    ["Something2"]=>
    float(1532)
    ["Something3"]=>
    float(1461)
  }
  [4]=>
  array(3) {
    ["Something"]=>
    float(2748)
    ["Something2"]=>
    float(2298)
    ["Something3"]=>
    float(2192)
  }
  [5]=>
  array(3) {
    ["Something"]=>
    float(4123)
    ["Something2"]=>
    float(3447)
    ["Something3"]=>
    float(3288)
  }
  [6]=>
  array(3) {
    ["Something"]=>
    float(6185)
    ["Something2"]=>
    float(5171)
    ["Something3"]=>
    float(4932)
  }
  [7]=>
  array(3) {
    ["Something"]=>
    float(9277)
    ["Something2"]=>
    float(7757)
    ["Something3"]=>
    float(7398)
  }
  [8]=>
  array(3) {
    ["Something"]=>
    float(13916)
    ["Something2"]=>
    float(11635)
    ["Something3"]=>
    float(11097)
  }
  [9]=>
  array(3) {
    ["Something"]=>
    float(20874)
    ["Something2"]=>
    float(17453)
    ["Something3"]=>
    float(16645)
  }
  [10]=>
  array(3) {
    ["Something"]=>
    float(31312)
    ["Something2"]=>
    float(26179)
    ["Something3"]=>
    float(24968)
  }
  [11]=>
  array(3) {
    ["Something"]=>
    float(46968)
    ["Something2"]=>
    float(39269)
    ["Something3"]=>
    float(37453)
  }
  [12]=>
  array(3) {
    ["Something"]=>
    float(70452)
    ["Something2"]=>
    float(58904)
    ["Something3"]=>
    float(56180)
  }
  [13]=>
  array(3) {
    ["Something"]=>
    float(105678)
    ["Something2"]=>
    float(88357)
    ["Something3"]=>
    float(84270)
  }
  [14]=>
  array(3) {
    ["Something"]=>
    float(158517)
    ["Something2"]=>
    float(132535)
    ["Something3"]=>
    float(126405)
  }
  [15]=>
  array(3) {
    ["Something"]=>
    float(237776)
    ["Something2"]=>
    float(198803)
    ["Something3"]=>
    float(189608)
  }
  [16]=>
  array(3) {
    ["Something"]=>
    float(356664)
    ["Something2"]=>
    float(298205)
    ["Something3"]=>
    float(284412)
  }
  [17]=>
  array(3) {
    ["Something"]=>
    float(534996)
    ["Something2"]=>
    float(447308)
    ["Something3"]=>
    float(426618)
  }
  [18]=>
  array(3) {
    ["Something"]=>
    float(802495)
    ["Something2"]=>
    float(670962)
    ["Something3"]=>
    float(639927)
  }
  [19]=>
  array(3) {
    ["Something"]=>
    float(1203742)
    ["Something2"]=>
    float(1006444)
    ["Something3"]=>
    float(959890)
  }
}

Y-sarake on TEXT-muotoinen. Missä on vika, kun tämä ei mene tietokantaan?

Grez [01.05.2010 13:15:57]

#

Jos tarkoituksella kirjoitit pulmapähkinän, johon on mahdollisimman vaikea arvata vastaus, niin onnistuit hienosti!

Jos taas oikeasti haluaisit tietää vastauksen, niin laita ihmeessä näkyviin se mysql_query() -funktiolla suoritettava SQL-kysely (tyyliin INSERT INTO ...) ja MySQL:n ilmoittamat virheilmoitukset.

pistemies [01.05.2010 13:24:33]

#

Oletko käsitellyt tuon merkkijonon kaikin tarpeellisin toimin?
Siis mysql_real_escape_string ja oletko tarkistanut or die(mysql_error()) toiminnolla että query lause onnistuu?

Veikkaan että tuo jälkimmäien on jäänyt tekemättä, koska tietokannan joihinkin kenttiin jotain tallentuu. ;)

Macro [01.05.2010 13:39:39]

#

Grez: Ei ollut tarkoitus tehdä mitään pulmapähkinää, vaan oikeasti on tämmöinen ongelma johon haluan vastauksen. En laittanut sitä esille sen takia, koska siinä ei ole mielestäni mitään vikaa.

<?php
mysql_query("INSERT INTO rakennukset(nimi, kustannukset) VALUES('$nimi', '" . mysql_real_escape_string(var_dump($tasot)) . "')") or die(mysql_error());

MySQL ei palauta mitään virheilmoituksia.

Vastaan jo seuraavaan kysymykseen, sisältääkö $tasot jotakin, ja mitä var_dump($tasot) tulostaa: Kyllä, ne ovat kunnossa.

pistemies [01.05.2010 13:46:45]

#

Mahtaako tuo olla aito "merkkijono" kun se tulee suoraan var_dump-funktiolta?

Chiman [01.05.2010 13:57:44]

#

Katsopa dokumentaatiosta mitä var_dump() palauttaa: https://www.php.net/manual/en/function.var-dump.php

pistemies [01.05.2010 14:11:40]

#

Jollakin konstilla sen kai saa merkkijonoksi:

php.net kirjoitti:

Tip

As with anything that outputs its result directly to the browser, the output-control functions can be used to capture the output of this function, and save it in a string (for example).

trilog [01.05.2010 14:16:40]

#

En kyllä ymmärrä miksi sinne tietokantaan pitää tuota dataa tuossa muodossa edes yrittää tunkea... sotii aika mukavasti vastaan kaikkia tietokannan periaatteita.

Pekka Mansikka kirjoitti:

Jollakin konstilla sen kai saa merkkijonoksi

<?php
$x = array(1, 2, 3, true);

ob_start();
var_dump($x);

$sisalto = ob_get_contents();
ob_end_clean();


var_dump($sisalto);

Macro [01.05.2010 15:56:22]

#

Tein noin kuin trilog näytti. Kun se haetaan tietokannasta, niin miten sen voi muuttaa takaisin arrayksi?

trilog [01.05.2010 16:14:22]

#

Macro kirjoitti:

miten sen voi muuttaa takaisin arrayksi?

Ei suoraan mitenkään. Jos on pakko käyttää tuollaista tapaa niin käytä PHP:n serialize-funktiota ja purkuun unserializea. Tai sitten sitä JSONia.

pistemies [01.05.2010 16:38:46]

#

Jos sinulla jo alkuaan oli se erilaisena merkkijonona, niin kannattaisko se tallentaa sellaisenaan kantaan, niin tarvitsee muuttaa arrayksi vain kerran. ;)


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta