WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   SQL-problem (https://www.wn.se/forum/showthread.php?t=23625)

Althalos 2007-09-15 19:23

Citat:

Data truncated for column 'length_hull' at row 1
Jag försöker skriva blankt till length_hull och får det felmedelandet som orsakar att ingenting skrivs... använder die() för att få det. Någon som vet vad det kan bero på?

mysputte 2007-09-15 21:06

Lite mer information vore hjälpsamt.

1. Vad har kolumnen för datatyp?
2. Är det NULL du menar med blankt?
3. Har kolumnen "NOT NULL"?

Artikel om data integritet från mysql.
http://dev.mysql.com/tech-resources/...integrity.html

Althalos 2007-09-16 00:00

Datatypen är "float", med blankt menar jag helt enkelt "". Typ jag skriver $variabel = ($info[2]) där $info[2] inte har något värde. Det har hämtats ur en databas.

Kolumnens standard är "NULL". NULL är satt till "ja" (kollar i phpmyadmin)..

WizKid 2007-09-16 00:27

Hur ser SQL-queryn ut?

Althalos 2007-09-16 01:26

$result = mysql_query("INSERT INTO boat (kolumn1, kolumn2, ..., kolumn32, kolumn33) VALUES ('$var1', '$var2', ..., 'var32', 'var33')");

Det är en helt vanlig insert query med 33 kolumner och 33 värden, har inte fyllt i nått mer.

Althalos 2007-09-16 01:51

Skulle det kunna hjälpa att sätta variabeln till NULL istället för ""... skriver man $var = NULL; då?

Althalos 2007-09-16 02:59

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' NULL, NULL, NULL, NULL, NULL, NULL, 314)' at line 6

Ändrade till null och fick det felmeddelandet?!

mysputte 2007-09-16 10:04

Finns det någon anledning till att du sätter det till NULL eller går det lika bra
att lägga in 0?

WizKid 2007-09-16 11:57

Kan vara bra att visa hur hela queryn ser ut och inte bara felmeddelandet.

Althalos 2007-09-16 16:18

Själva queryn:

Kod:

$result = mysql_query("INSERT INTO boat (name, boat_type_id, length_overall, length_hull, length_water, width, depth,
 * * * *depth_min, deplacement, engine, rig, lys, hull_id, hull_construction, rig_height,
 * * * *rudder_id, stern_id, other, fuel_tank, water_tank, bunks_min, bunks_max, cabin_height, interior, constructor_id)
 * * * *VALUES ($name, $boat_type, $length_overall, $length_hull, $length_water,
 * * * *$width, $depth, $depth_min, $deplacement, $engine, $rig, $lystal,
 * * * *$hull_id, $hull_construction, $rig_height, $rudder, $stern, $other, $fuel_tank, $water_tank,
 * * * *$bunks_min, $bunks_max, $ruffhojd, $interior, $c_id)");

Varje variabel har fixats på det här sättet:
Kod:

function fix($value) {
 * *if ($value == "-") return "";
 * *if (strlen($value)>0) return "'".$value."'";
 * *else return "NULL";
 * *}
$name = fix($info['name']);

Bry er inte om if $value == "-" det är bara en fulhaxx. Datan kommer ifrån en annan databas och när ingenting finns skall den egentligen vara null, men ibland är den inte det.

Det senaste felmedelandet är:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' NULL, NULL, NULL, NULL, NULL, NULL, NULL)' at line 6

Det spelar roll ifall det är 0 eller null, eftersom vissa grejer kan vara noll, men null kommer när datan presenteras visa "-", alltså att man inte veta.

WizKid 2007-09-16 16:25

Du har inte lust att visa queryn som körs? Hur du skapar queryn är ju rätt ointressant. Vad som är intressant är ju hur den queryn som du kör ser ut.

Althalos 2007-09-16 17:46

Förlåt, jag fattade inte att det var jag skulle göra. Tack vare tipset lyckades jag lösa en del grejer. Fast problem kvarstår fortfarande:

Kod:

INSERT INTO boat (name, boat_type_id, length_overall, length_hull, length_water, width, depth, depth_min, deplacement, engine, rig, lys, hull_id, hull_construction, rig_height, rudder_id, stern_id, other, fuel_tank, water_tank, bunks_min, bunks_max, cabin_height, interior, constructor_id) VALUES ('Testing 34', '1', '9.75', '10', NULL, NULL, NULL, NULL, NULL, NULL, '5', NULL, '4', NULL, NULL, '2', '4', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in g:\home\sailguide.com\wwwroot\search\add\del.php on line 80
Out of range value adjusted for column 'boat_id' at row 1
Out of range value adjusted for column 'boat_id' at row 1
Out of range value adjusted for column 'boat_id' at row 1
Out of range value adjusted for column 'boat_id' at row 1
Out of range value adjusted for column 'boat_id' at row 1
Out of range value adjusted for column 'boat_id' at row 1
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2'', ''5'')' at line 1
Båten har blivit tillagd. Gå tillbaks

Vad betyder out of range t. ex. Not valid mysql result beror på att båten inte riktigt lades till i databasen, vilket gör att kod längre ner inte kan hämta något därifrån.

WizKid 2007-09-16 17:56

Kör du mysql_fetch_array på resultatet som du får från inserten?

Out of range-meddelandena, får du dem från en insert eller en för varje insert? Är det från inserten som du visade eller är det andra inserts?

Althalos 2007-09-16 18:54

Nej. Förlåt igen för att jag ger så dålig information, förstod det inte själv först men out of range beror också på att båten egentligen aldrig skrivs in i databasen - annars hade den hittat id:t och sedan använt sig av det .

Vänta med att svara för det verkar visst som att båten lades till.. ändå får jag massor med felmeddelanden och jag fattar inte varför. Skall undersöka saken själv lite och se om jag kan hitta något.

martine 2007-09-16 21:01

Varför sparar du värden (int/float) som strängar?

Anväder du mysql_fetch_array() för att göra en insert?

Försök dela upp problemet i mindre delar så att du kan isolera felet. Kommentera ut allting annat så att kan se att det verkligen är där felet ligger. Låter som det vore en bra idé för din del att göra färdiga funktioner/objekt för saveBootData(), getBoatData(), etc så att du kan fila på de enskilda funktionerna. Du kan också prova att köra sql-queryn direkt t ex i mySqlAdmin eller vad det nu heter så att du ser att det verkligen är query:n som är problemet och inte någonstans i php.


Alla tider är GMT +2. Klockan är nu 02:05.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson