2013-02-27 3 views
0

Я экспериментирую с PHP и Mysql. Я создал базу данных и таблицу на mu localhost с помощью xampp. Кроме того, я создал файл, который предполагают, чтобы заполнить свою таблицу с помощью запроса, но странно то, что я не получаю ошибки, но в то же время никаких данных не был включен в мой DataBase:PHP вставляет данные в Mysql

КОД:

register.php:

<?php 

session_start(); 

if(isset($_POST['submitted'])){ 

    include('connectDB.php'); 

    $UserN = $_POST['username']; 
    $Upass = $_POST['password']; 
    $Ufn = $_POST['first_name']; 
    $Uln = $_POST['last_name']; 
    $Uemail = $_POST['email']; 

    $NewAccountQuery = "INSERT INTO users (user_id,username, password, first_name, last_name, emial) VALUES ('$UserN','$Upass', '$Ufn', '$Uln', '$Uemail')"; 

    if(!mysql_query($NewAccountQuery)){ 

     die(mysql_error()); 

    }//end of nested if statment 


    $newrecord = "1 record added to the database"; 

}//end of if statment 

?> 



<html> 
<head> 

<title>Home Page</title> 
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> 
<link href="style.css" rel="stylesheet" type="text/css" /> 
</head> 
<body> 

    <div id="wrapper"> 
     <header><h1>E-Shop</h1></header> 


     <article> 
     <h1>Welcome</h1> 

      <h1>Create Account</h1> 

     <div id="login"> 

       <ul id="login"> 

       <form method="post" action="register.php" > 
        <fieldset> 
         <legend>Fill in the form</legend> 

         <label>Select Username : <input type="text" name="username" /></label> 
         <label>Password : <input type="password" name="password" /></label> 
         <label>Enter First Name : <input type="text" name="first_name" /></label> 
         <label>Enter Last Name : <input type="text" name="last_name" /></label> 
         <label>Enter E-mail Address: <input type="text" name="email" /></label> 
        </fieldset> 
         <br /> 

         <input type="submit" submit="submit" value="Create Account" class="button"> 

       </form> 




       </div> 
      <form action="index.php" method="post"> 
      <div id="login"> 
       <ul id="login"> 
        <li> 
         <input type="submit" value="Cancel" onclick="index.php" class="button"> 
        </li> 
       </ul> 
      </div>  



     </article> 
<aside> 
</aside> 

<div id="footer">This is my site i Made coppyrights 2013 Tomazi</div> 
</div> 

</body> 
</html> 

у меня есть также один заголовочный файл, который connectDB: структура

<?php 


    session_start(); 

     $con = mysql_connect("127.0.0.1", "root", ""); 
     if(!$con) 
      die('Could not connect: ' . mysql_error()); 

     mysql_select_db("eshop", $con) or die("Cannot select DB"); 

?> 

База данных:

база данных Имя: eshop; только одна таблица в БД: пользователи;

пользователи таблица состоит из:

user_id: A_I , PK 
username 
password 
first_name 
last_name 
email 

я провожу достаточно много времени, чтобы решить эту проблему провели исследование и посмотрел на некоторые учебники, но не повезло

Можно ли определить, что является корнем моя проблема...?

+0

Вы используете [** устаревший ** API баз данных] (http://stackoverflow.com/q/12859942/19068) и должны использовать [современную замену] (http://php.net /manual/en/mysqlinfo.api.choosing.php). Вы также уязвимы для [SQL-инъекций] (http://bobby-tables.com/) **, что современный API упростит [защиту] (http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php). – Quentin

+0

Уверены ли вы, что нет ошибок? В инструкции 'INSERT' указано больше столбцов, чем у значений. – David

+1

Готов поспорить, что вы отключили ошибки. – L0j1k

ответ

2

Это потому, что if(isset($_POST['submitted'])){

вы не имеете поле ввода с именем submitted дать имя кнопки представить submitted

<input name="submitted" type="submit" submit="submit" value="Create Account" class="button">

Проверьте вставки запроса у вас есть больше полей, чем ваши ценности

Смена:

$NewAccountQuery = "INSERT INTO users (user_id,username, password, first_name, last_name, email) VALUES ('$UserN','$Upass', '$Ufn', '$Uln', '$Uemail')";

к:

$NewAccountQuery = "INSERT INTO users (user_id,username, password, first_name, last_name, email) VALUES ('','$UserN','$Upass', '$Ufn', '$Uln', '$Uemail')";

user_id Учитывая это автоматическое приращение поля.

Ваш email в запросе написан неверно как emial.

+0

все еще не работает:/его вождение меня сумасшедшим хе-хе – Tomazi

+0

попробуйте повторить что-то внутри, если состояние –

+0

OK u просто отсортировал меня много thx. после внесения изменений в предложенные вами изменения, у меня также была ошибка: «Хорошо, ты меня поймал, но теперь я получаю сообщение об ошибке». Примечание: сеанс уже запущен - игнорирование session_start() в C: \ xampp \ htdocs \ eshop \ connectDB.php в строке 4 ", поэтому мне также пришлось удалить session_start() из моего файла register.php – Tomazi

0

Включено ли сообщение об ошибках? Поместите это в верхней части экрана:

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

это не ответ. это можно сказать и в комментариях –

+0

У меня нет кнопки комментариев в вопросе. – HarryFink

+0

есть «добавить/показать больше комментариев» щелкните по нему, вы получите поле для комментариев –

0

Некоторые хорошие ответы выше, но я также хотел бы предложить вам использовать новую MySQLi/PDO вместо устаревшей 2002 MySQL API.

Некоторые примеры: (я буду использовать MySQLi, так как вы написали свой оригинальный пример, в процедурном коде)

connectDB.php

<?php 
$db = mysqli_connect('host', 'user', 'password', 'database'); 

if (mysqli_connect_errno()) 
    die(mysqli_connect_error()); 
?> 

регистр.PHP - я буду просто выписать пример PHP часть и позволить вам сделать все остальное

<?php 
//i'll always check if session was already started, if it was then 
//there is no need to start it again 
if (!isset($_SESSION)) { 
    session_start(); 
} 

//no need to include again if it was already included before 
include_once('connectDB.php'); 

//get all posted values 
$username = $_POST['username']; 
$userpass = $_POST['password']; 
$usermail = $_POST['usermail']; 
//and some more 

//run checks here for if fields are empty etc? 
//example check if username was empty 
if($username == NULL) { 
    echo 'No username entered, try <a href="register.php">again</a>'; 
    mysqli_close($db); 
    exit(); 
} else { 
    //if username field is filled we will insert values into $db 
    //build query 
    $sql_query_string = "INSERT INTO _tablename_(username,userpassword,useremail) VALUES('$username','$userpass','$usermail')"; 
    if(mysqli_query($db,$sql_query_string)) { 
    echo 'Record was entered into DB successfully'; 
    mysqli_close($db); 
    } else { 
    echo 'Ooops - something went wrong.'; 
    mysqli_close($db); 
    } 
} 
?> 

это должно работать достаточно хорошо, и все, что вам надо добавить свои собственные размещенные значения и построить форму, чтобы разместить его, это все.

0
<?php 
$db = mysqli_connect('host', 'user', 'password', 'database'); 

if (mysqli_connect_errno()) 
    die(mysqli_connect_error()); 
?> 
register.php -- i'll just write out an example php part and let you do the rest 

<?php 
//i'll always check if session was already started, if it was then 
//there is no need to start it again 
if (!isset($_SESSION)) { 
    session_start(); 
} 

//no need to include again if it was already included before 
include_once('connectDB.php'); 

//get all posted values 
$username = $_POST['username']; 
$userpass = $_POST['password']; 
$usermail = $_POST['usermail']; 
//and some more 

//run checks here for if fields are empty etc? 
//example check if username was empty 
if($username == NULL) { 
    echo 'No username entered, try <a href="register.php">again</a>'; 
    mysqli_close($db); 
    exit(); 
} else { 
    //if username field is filled we will insert values into $db 
    //build query 
    $sql_query_string = "INSERT INTO _tablename_(username,userpassword,useremail) VALUES('$username','$userpass','$usermail')"; 
    if(mysqli_query($db,$sql_query_string)) { 
    echo 'Record was entered into DB successfully'; 
    mysqli_close($db);`enter code here` 
    } else { 
    echo 'Ooops - something went wrong.'; 
    mysqli_close($db); 
    } 
} 
?> 
+1

Добро пожаловать в SO! Это может быть хорошей идеей, чтобы объяснить идеи, которые вы использовали здесь, в каком-то сводке или заключении, а не в комментариях, поэтому вы можете расширить их в более удобной для пользователя форме. –

Смежные вопросы