PHP вставить в не добавление данных в базу данных, есть идеи? - PullRequest
2 голосов
/ 01 января 2011

Я новичок в php и создаю простую систему авторизации.Когда кто-то хочет зарегистрироваться, они идут в register.html, а затем вставляют .php.Приведенный ниже код должен добавить данные из формы в таблицу, но не появляется в ней.Я подозреваю, что это, вероятно, строка: $ sql = INSERT INTO ... Единственное, что появляется, - это выражение echo внизу кода, которое, я знаю, вероятно, является простым ответом на это, но я все еще не могу его найти.Спасибо, любая помощь очень ценится!

Код для insert.php

<?php
$email=$_POST['email'];
$name=$_POST['name'];
$password=$_POST['password'];
$con = mysql_connect("localhost","user","p@ssword");
mysql_select_db("database", $con);
$sql="INSERT INTO table_name (email, name, password)
VALUES ('$email', '$name', '$password')";  
echo"Thank you, you are now registered and can login on our homepage";
mysql_close($con);
?>

Еще раз спасибо!

Ответы [ 2 ]

6 голосов
/ 01 января 2011

Вы установили соединение и подготовили запрос, но фактически не выполняли его! Вам нужно вызвать mysql_query () , передав SQL и дескриптор соединения, чтобы указать базе данных выполнить инструкцию.

<?php
$email=$_POST['email'];
$name=$_POST['name'];
$password=$_POST['password'];
$con = mysql_connect("localhost","user","p@ssword");
mysql_select_db("database", $con);
$sql="INSERT INTO table_name (email, name, password)
VALUES ('$email', '$name', '$password')";
mysql_query( $sql, $con ) or trigger_error( mysql_error( $con ), E_USER_ERROR );
echo"Thank you, you are now registered and can login on our homepage";
mysql_close($con);
?>

Поскольку вы говорите, что вы новичок в PHP (и, возможно, в разработке баз данных в целом?), Позвольте мне также указать вам руководство по PHP по внедрению SQL , которое объясняет, что это такое, и почему вы должны защититься от этого - ваш пример кода, например, уязвим.

2 голосов
/ 01 января 2011

Причина того, что этот код не работает, заключается в том, что вы не получили вызов mysql_query, который фактически делает запрос:

mysql_query($sql);

Однако большая проблемав том, что ваше приложение в настоящее время крайне небезопасно, поскольку вы не проверяете действительность $email, $name или $password, поэтому злоумышленник может легко сделать неприятные вещи с вашей базой данных.По крайней мере, используйте mysql_real_escape_string, чтобы избежать их;желательно использовать библиотеку, такую ​​как PDO , чтобы обеспечить безопасность вашего сайта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...