Ошибка обновления базы данных с помощью PHP - PullRequest
0 голосов
/ 07 июля 2011

В настоящее время я пытаюсь вставить данные в базу данных MySQL с помощью PHP. Чтобы помочь, я следую этому учебнику.

До сих пор я предпринял следующие шаги:

  • Вручную создал базу данных через phpMyAdmin с именем "core_group_me" на моем WAMPSERVER
  • Создана страница формы с именем "form.php" (код ниже):

    <html>
    <head>
    <title></title>
    </head>
    
    <body>
    <form method="post" action="update.php">
    
    Username:<br />
    
    <input type="text" name="id" size="30" /><br />
    
    First Name:<br />
    
    <input type="text" name="firstname" size="30" /><br />
    
    Last Name:<br />
    
    <input type="text" name="lastname" size="30" /><br />
    
    Email:<br />
    
    <input type="text" name="email" size="30" /><br />
    
    Location:<br />
    
    <input type="text" name="location" size="30" /><br />
    
    Expertise:<br />
    
    <input type="text" name="expertise" size="30" /><br /><br />
    
    <input type="submit" value="Update Database" />
    
    </body>
    </html>
    
  • Создана страница для обновления базы данных «core_group_me» с именем «update.php» (код ниже):

    <?php
    
    $id = $_POST['id'];
    $firstname = $_POST['firstname'];
    $lastname = $_POST['lastname'];
    $email = $_POST['email'];
    $location = $_POST['location'];
    $expertise = $_POST['expertise'];
    
    mysql_connect ("localhost", "core_group_me", "") or die ('Error: ' .mysql_error());
    mysql_select_db ("members");
    
    $query="INSERT INTO members (id, firstname, lastname, email, location, expertise)VALUES ('".$id."', '".$firstname."', '".$lastname."', '".$email."', '".$location."', '".$expertise."')";
    
    mysql_query($query) or die ('Error updating database');
    
    echo "Database Updated With: " .$id. " " .$firstname. " ".$lastname. " ".$email. " " .$location. " " .$expertise ;
    
    ?>
    

При этом, когда я открываю страницу "form.php", вводю информацию в указанные поля и отправляю все, я получаю следующую ошибку: "Ошибка обновления базы данных". Я очень новичок в программировании на PHP и работе с базами данных MySQL, поэтому я, честно говоря, абсолютно не знаю, где я ошибся. Любая помощь будет высоко ценится!

Ответы [ 4 ]

2 голосов
/ 07 июля 2011

В приведенной ниже строке вместо core_group_me используйте ваше имя пользователя mysql, а третьим параметром является ваш пароль. Если у вас нет пароля, оставьте его пустым, в противном случае введите свой пароль.Например:

mysql_connect ("localhost", "root", "123456") or die ('Error: ' .mysql_error());

, а также отредактируйте эту строку:

mysql_select_db ("members");

в:

mysql_select_db ("core_group_me");
0 голосов
/ 05 января 2014

Не уверен, что этот ответ достаточно по теме. Но если вы начинающий программист PHP, возможно, было бы целесообразно изучить расширение MySqli или PDO для обработки MySql, поскольку с PHP 5.5.0 расширение mysql удалено. (http://nl1.php.net/mysql_query) Расширение MySqli можно использовать аналогично расширению MySql. Поэтому, если вы просто не модифицируете старый проект (и даже тогда, возможно, вы захотите обновить свой код)

0 голосов
/ 07 июля 2011

Создать базу данных, используя эту структуру:

CREATE TABLE stackoverflow. members (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, username VARCHAR (30) NOT NULL, firstname VARCHAR (30) NOT NULL, lastname VARCHAR (30) NOT NULL, email VARCHAR (100) NOT NULL, location VARCHAR (30) NOT NULL, expertise VARCHAR (30) NOT NULL) ДВИГАТЕЛЬ = MYISAM;

и update.php:

<?php

 $username = $_POST['id'];
 $firstname = $_POST['firstname'];
 $lastname = $_POST['lastname'];
 $email = $_POST['email'];
 $location = $_POST['location'];
 $expertise = $_POST['expertise'];

 mysql_connect ("localhost", "root", "yourpassword") or die(mysql_error());
 mysql_select_db ("stackoverflow");

 $query="INSERT INTO members (id,username, firstname, lastname, email, location, expertise) VALUES ('','$username', '$firstname', '$lastname', '$email', '$location', '$expertise')";

 mysql_query($query) or die (mysql_error());

 echo "Database Updated With: " .$username. " , " .$firstname. " , ".$lastname. " , ".$email. " , " .$location. " , " .$expertise ;

 ?>

Не копируйте и не вставляйте его в свой файл .. Просто попытайтесь понять это ..

0 голосов
/ 07 июля 2011

Я полагаю, что Франсуа упомянул ошибку в sql. Чтобы не получить сообщение «die», вы можете добавить что-то вроде http://php.net/manual/de/function.mysql-error.php.

mysql_query($query) or die ('Error updating database<br />' . mysql_errno() . ": " . mysql_error());

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

...