$courtinsert = "INSERT INTO court (id,name,date,reason,punishment) VALUES ('$UID','$name',NOW(),'$reason','$punishment')";
$bool = mysql_query($courtinsert) or die(mysql_error());
if($bool==1) echo "<br><b><font color='orange'>User toegevoegd</font></b>";
if($bool<>1) echo "<br><b><font color='orange'>Bij het toevoegen van een user is een fout opgetreden</font></b";
}
?>
Ik kan niet de fout vinden wat er mis gaat hier
als ik een user wil toevoegen via een form
dan krijg ik deze fout
Out of range value adjusted for column 'id' at row 1
wat hij dan in de column ID wil neer zetten is niks
de column ID staat in tabel court als INT(225) NOT NULL AUTO_INCREMENT
wat hij er neer moet zetten is de ID van de opgegeven naam uit de tabel usersinfo
wat heeft iedereen met
<?php
$name = $_POST['addname'];
$date = $_POST['adddate'];
$reason = $_POST['addreason'];
?> :S Denk je dat dat nut heeft ofzo?
Als ID een auto_increment is, waarom geef je id dan $UID. Gek als je dan een fout krijgt.
Int(255) ? :S Int(11) is meer als zat.
Turmin, beetje vriendelijker mag ook. Nut heeft het misschien niet, maar sommige vinden het wel makkelijker omdat het korter is. Wat vooral leuk is als je de vars vaak gebruikt erna.
@Martijn:
Wat nu in $UID komt is een resourceid van je query, niet het antwoord.
<?php
if($action == "Insert"){
$name = $_POST['addname'];
$date = $_POST['adddate'];
$reason = $_POST['addreason'];
$punishment = $_POST['addpunishment'];
$IdQuery = mysql_query("
SELECT id
FROM usersinfo
WHERE name='".$_POST['addname']."'
"); // Geen backtickets (`) gebruiken!
$Id = mysql_fetch_assoc($IdQuery); // Hier ga ik er van uit dat name uniek is in je tabel!
$UID = $id['id'];
$courtinsert = "
INSERT INTO court (id,name,date,reason,punishment)
VALUES (
'".$UID."',
'".$name."',
NOW(),
'".$reason."',
'".$punishment."'
)";
/** Dit is natuurlijk geen manier van foutafhandeling
* Als je een error krijgt, zal je de nette melding niet te zien krijgen.
* $bool = mysql_query($courtinsert) or die(mysql_error());
* if($bool==1) echo "<br><b><font color='orange'>User toegevoegd</font></b>";
* if($bool<>1) echo "<br><b><font color='orange'>Bij het toevoegen van een user is een fout opgetreden</font></b";
**/
$AddResult = mysql_query($courtinsert) or $mysql_error = mysql_error();
if(!empty($mysql_error))
{
echo 'Er is een fout opgetreden in de query:<br>'.$mysql_error;
}
else
{
echo 'User succesvol toegevoegd.';
}
// Dit is een manier, maar er zijn natuurlijk nog veel meer mogelijkheden.
}
?>
Dit zou volgens mij moeten werken.
Dit verhaal houdt me al een tijdje bezig, dus ik ben net maar eens gaan testen. De maximale waarde van een signed INT is 2147483647 volgens het MySQL manual.
Stel, je hebt de volgende tabel:
CREATE TABLE int_test (
id int(11) NOT NULL auto_increment,
int_1 int(1) NOT NULL,
int_2 int(2) NOT NULL,
int_3 int(3) NOT NULL,
int_4 int(4) NOT NULL,
int_5 int(5) NOT NULL,
int_6 int(6) NOT NULL,
int_7 int(7) NOT NULL,
int_8 int(8) NOT NULL,
int_9 int(9) NOT NULL,
int_10 int(10) NOT NULL,
int_11 int(11) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB;
en je laat daar de volgende query op los:
<?php
require '../../db_config.php';
// vraag: maakt het uit of je INT(1) of INT(11) doet?
$sql = "
INSERT INTO int_test
SET
int_1 = 2147483647,
int_2 = 2147483647,
int_3 = 2147483647,
int_4 = 2147483647,
int_5 = 2147483647,
int_6 = 2147483647,
int_7 = 2147483647,
int_8 = 2147483647,
int_9 = 2147483647,
int_10 = 2147483647,
int_11 = 2147483647";
if (!mysql_query ($sql)) {
trigger_error ($sql . "\n" . mysql_error ());
}
?>
Dan blijkt uit mijn test dat MySQL alle velden keurig(?) vult. Het maakt bij een type INT dus geen zak uit welk getal je tussen de haakjes opgeeft. Bij een type DECIMAL waarschijnlijk wel, maar dat test ik een andere keer nog wel eens.
hieronder had ik zo gedaan om dat ik anders niet die mysql fout te zien kreeg
/** Dit is natuurlijk geen manier van foutafhandeling
* Als je een error krijgt, zal je de nette melding niet te zien krijgen.
* $bool = mysql_query($courtinsert) or die(mysql_error());
* if($bool==1) echo "<br><b><font color='orange'>User toegevoegd</font></b>";
* if($bool<>1) echo "<br><b><font color='orange'>Bij het toevoegen van een user is een fout opgetreden</font></b";
**/