FAQ |
Kalender |
2005-03-31, 21:51 | #21 | ||
|
|||
Mycket flitig postare
|
jag repeterar:
Exakt hur ser din PHP sträng ut som du försöker inserta? I ett tidigare inlägg påpekade ju robert ett problem. gör typ: $qs = sprintf("INSERT bla bla bla"); echo " " . $qs . "</p>"; mysql_query($qs); Om mysql_query returnerar false? vad får du i så fall för fel? |
||
Svara med citat |
2005-04-01, 01:15 | #22 | ||
|
|||
Nykomling
|
Ah ursäkta.
Så här ser koden ut. <? $uni = addslashes($uni); $program = addslashes($program); $term = addslashes($term); $course = addslashes($course); $title = addslashes($title); $author1 = addslashes($author1); $author2 = addslashes($author2); $author3 = addslashes($author3); $author4 = addslashes($author4); $edition = addslashes($edition); $year = addslashes($year); $publisher = addslashes($publisher); $isbn = addslashes($isbn); $status = addslashes($status); $db=mysql_connect("localhost", "uppsalamedicin_", "vitpiller"); mysql_select_db("uppsalamedicin_", $db); if (!$db) { echo "Error Kunde inte kontakta databasen försök igen senare."; exit; } mysql_query("INSERT INTO tblbooks (year, publisher, isbn, status) VALUES ('$year', '$publisher', '$isbn', '$status')"); $result = mysql_query($query); if ($result) echo mysql_affected_rows()." bok lagrad i databasen."; ?> |
||
Svara med citat |
2005-04-01, 02:33 | #23 | ||
|
|||
Nykomling
|
Jag får alltså inte fram något felmeddelande alls. Det enda jag får fram är den HTML kod som är skriven innan scriptet. Något händer dock med scriptet eftersom data "registreras" i database...
|
||
Svara med citat |
2005-04-01, 10:20 | #24 | ||
|
|||
Mycket flitig postare
|
Jag förstår allvarligt inte vad du säger...
vad menar du med Något händer dock med scriptet eftersom data "registreras" i database...? Vad ger mysql_affected_rows()? Om du kör strängen som skapas manuellt, i phpadmin - funkar det då? |
||
Svara med citat |
2005-04-01, 12:58 | #25 | ||
|
|||
Nykomling
|
Kör jag php scriptet så lagras inte den data jag satt in i formuläret, men en ny rad i tabellen skapas, dvs en ny bok registreras men ingen information om boken finns tillgänglig.
mysql_affected_rows() ger ingenting. Det enda som sker efter att jag tryckt på knappen "skicka", dvs anropat mitt php script (insert_book.php) är att den html kod som finns i början kommer fram. Inga mysql_affectd_rows(), ingen error som if (!$db) som visar att databasen inte kontaktas (vilken den ändå måste göra då en ny bokID registreras). För att göra det väldigt enkelt har jag valt att göra ett formulär med en enda rad. www.uppsalamedicin.se/bokbas/nybok5.html |
||
Svara med citat |
2005-04-01, 13:08 | #26 | ||
|
|||
Nykomling
|
Sätter jag in detta i PHPADMIN
INSERT INTO tblbooks VALUES ("uu", "lak", 1, "cbb", "jag och döden", "sven hedin", "arne", "sven", "kalle", "2004", "1", "12345674121", "stromabolaget", "reck"); får jag detta svar: #1136 - Column count doesn't match value count at row 1 Det är 14 columner utöver ( bokID INT NULL AUTO_INCREMENT PRIMARY KEY), vilket motsvarar antalet fält ovan ("uu", "lak", 1 etc) |
||
Svara med citat |
2005-04-01, 13:12 | #27 | ||
|
|||
Nykomling
|
Så här ser det ut i PHP admin när jag väljer att exportera data från tblbooks. Då har jag gått in på www.uppsalamedicin.se/bokbas/nybok5.html och valt att skicka mitt formulär 2 ggr (två rader uppstår alltså tabellen, men som visas nedan finns ingen data alls).
Själv är jag lite osäker på varför kursID tex har default '0', vad är "UNIQUE KEY" som står för uniID detta stämmer väl inte överens med hur jag har skapat tabellen ovan? Struktur för tabell `tblbooks` # CREATE TABLE `tblbooks` ( `bokID` int(11) NOT NULL auto_increment, `uniID` varchar(4) default NULL, `programID` varchar(5) NOT NULL default '', `termID` varchar(7) NOT NULL default '', `kursID` int(11) NOT NULL default '0', `title` varchar(200) NOT NULL default '', `author1` varchar(50) default NULL, `author2` varchar(50) default NULL, `author3` varchar(50) default NULL, `author4` varchar(50) default NULL, `year` varchar(4) default NULL, `edition` char(3) default NULL, `isbn` varchar(13) default NULL, `publisher` varchar(60) default NULL, `STATUS` varchar(5) default NULL, PRIMARY KEY (`bokID`), UNIQUE KEY `uniID` (`uniID`), KEY `bokID` (`bokID`) ) TYPE=MyISAM AUTO_INCREMENT=3 ; # # Data i tabell `tblbooks` # INSERT INTO `tblbooks` VALUES (1, NULL, '', '', 0, '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, ''); INSERT INTO `tblbooks` VALUES (2, NULL, '', '', 0, '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, ''); |
||
Svara med citat |
2005-04-01, 14:51 | #28 | ||
|
|||
Mycket flitig postare
|
Byt ut:
Kod:
if ($result) echo mysql_affected_rows()." bok lagrad i databasen."; Kod:
if ($result) echo mysql_affected_rows()." bok lagrad i databasen."; else echo mysql_error(); Är att du ju inte specificerat alla kolumner du vill inserta (som du gjort med dina 4 kolumner i PHP koden). Om du inte gör INSERT table(columns) VALUES(values) utan bara INSERT table VALUES(values) måste du ha med alla kolumner vilket ju är lämpligt med tanke på din auto increment. På den här raden: mysql_query("INSERT INTO tblbooks (year, publisher, isbn, status) VALUES ('$year', '$publisher', '$isbn', '$status')"); Inseratr du ju t.ex. inget i kolumnen programID m.fl. som har NOT NULL och då misslyckas ju inserten eftersom du inte tillhandahpålller värden för kolumner som är NOT NULL och dessutom saknar default. |
||
Svara med citat |
2005-04-01, 18:37 | #29 | ||
|
|||
Nykomling
|
eg0master,
tusen tack för hjälpen. Jag gör ändringarna och meddelar vad som skett! |
||
Svara med citat |
2005-04-01, 18:48 | #30 | ||
|
|||
Nykomling
|
Jag gjorde ändringen och det svar jag får är:
Query was empty. Jag har innan dess tagit bort tabellen och lagt till en ny fast den ser ut såhär: Kod:
create table tblbooks ( bokID INT NULL AUTO_INCREMENT PRIMARY KEY, kursID INT NULL, title VARCHAR(200) NULL, author1 VARCHAR(50) NULL, author2 VARCHAR(50) NULL, author3 VARCHAR(50) NULL, author4 VARCHAR(50) NULL, year CHAR(4) NULL, edition CHAR(3) NULL, isbn CHAR(13) NULL, status VARCHAR(5) NULL ); |
||
Svara med citat |
Svara |
|
|