sql >> Database teknologi >  >> RDS >> Mysql

Problem med at gemme data i databasen i php

For det første bruger du en bindestreg til din sex-select kolonne.

MySQL tænker, at du vil lave en matematisk ligning, som oversættes til:

køn (minus) vælg.

Pak den ind i backticks og mangler kolonnen for photo

(fname, lname, email, pass, phone, photo, `sex-select`, month,day,year)
                                   ^^^^^^ missing column

efter at have brugt mysql_error() med mysql_query() ville have signaleret fejlen.

Også $sex-select det skal være $sex_select Brug ikke også bindestreger til variabler.

Så skift alle disse forekomster til $sex_select i dine VÆRDIER også.

('$fname', '$lname', '$email', '$pass', '$phone', '$photo', '$sex_select', '$month','$day','$year')

Jeg har bemærket, at både din DB og tabel hedder crop .

$mysql_database = "crop";

og

mysql_query("INSERT INTO crop...

En af dem kan være forkert. Sørg for, at DB-navnet er, hvad det skal være, sammen med tabellen. Det ser bare ikke rigtigt ud for mig, men jeg kan tage fejl. Kun du ved, hvad de hedder.

Plus mysql_close($con); dette skal være mysql_close($bd);
da du bruger $bd = mysql_connect

Tilføj fejlrapportering til toppen af ​​din(e) fil(er), hvilket vil hjælpe under produktionstestning.

error_reporting(E_ALL);
ini_set('display_errors', 1);

hvilket ville have signaleret, at fejl også, hvilket er noget du ikke gør, kontrollerer for fejl. Dette er vigtigt under udvikling.

EDIT: for kontrol af DB-forbindelsesfejl:

I stedet for:

$mysql_hostname = "localhost";
$mysql_user = "root";
$mysql_password = "";
$mysql_database = "crop";
$prefix = "";
$bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password) or die("Could not connect database");
mysql_select_db($mysql_database, $bd) or die("Could not select database");

Brug følgende til at fange eventuelle fejl, hvis der skulle være nogen. Brug af die("Could not connect database") er ikke godt nok.

Hvis crop er ikke databasen, vil MySQL fortælle dig.

<?php
$bd = mysql_connect('localhost', 'root', '');
if (!$bd) {
    die('Not connected : ' . mysql_error());
}

// make foo the current db
$db_selected = mysql_select_db('crop', $bd);
if (!$db_selected) {
    die ('Can\'t use foo : ' . mysql_error());
}

Det samme for din forespørgsel:

$result = mysql_query("INSERT INTO crop(fname, lname, email, pass, phone, photo, `sex-select`, month,day,year)  
VALUES ('$fname', '$lname', '$email', '$pass', '$phone', '$photo', '$sex-select', '$month','$day','$year')");

if (!$result) {
    die('Invalid query: ' . mysql_error());
}

Plus, ifølge din HTML-formular:

<select name="sex-select" id="sex-select">

burde være

<select name="sex_select" id="sex-select">


  1. Hvad er use cases for at vælge CHAR frem for VARCHAR i SQL?

  2. MySQL JSON_OBJECT() med nogle felter, der allerede indeholder JSON-streng

  3. Hvordan kan jeg kortlægge en Java-dato til DATETIME i mysql (som standard dens TIMESTAMP) med Hibernate-annoteringer

  4. Diff. mellem datoer - SQL plus