2017-02-11 13 views
1

Итак, я пытаюсь проверить ли правильные имя пользователя и адрес электронной почты, введенный пользователем в HTML форме в соответствии с базой данныхПроверка электронной почты для конкретного пользователя, используя PHP и MYSQL

У меня есть база данных называется тестирование и таблицы которая имеет два поля: имя и адрес электронной почты.

это код

<html> 
<body> 

<form action="conn.php" method="post"> 
Name: <input type="text" name="name"><br> 
E-mail: <input type="text" name="email"><br> 
<input type="submit"> 
</form> 

</body> 
</html> 


    <?php 
$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname="testing"; 
$name=$_POST['name']; 
$mail=$_POST['email']; 
// Create connection 
$conn1 = new mysqli($servername, $username, $password, $dbname); 
$query='select email from info where name= "$name"'; 
$results = mysqli_query($conn1,$query); 
$row= mysqli_fetch_assoc($results); 
echo $row["email"]; 
$email=$row["email"]; 
if($mail==$email){ 
    echo " correct values"; 
} 
else 
    echo " incorrect"; 
//echo $name, $email; 
// Check connection 
//if ($conn1->connect_error) { 
// die("Connection failed: " . $conn1->connect_error); 
//} 
//echo "Connected successfully"; 
$conn1->close(); 
?> 

, но результат всегда неправильно. Значения, которые я вводил в текстовые поля, соответствуют значениям в базе данных.

+0

Первый: Не пытаться интерполировать пользователя -ввод непосредственно в sql запросов, используйте заполнители ('?'), иначе вы можете использовать атаки SQL-Injection. Если бы вы использовали заполнители, запрос действительно сработал бы - поскольку ваш код стоит вам выбрать для буквального «$ name» в качестве имени, а не для введенного имени. –

ответ

1

minnor проблема с одной/двумя quotes.Update эта линия

$query='select email from info where name= "$name"'; 

с

$query="select email from info where name= '$name'"; 

С уважением :)

0

Вы должны использовать заполнители, код будет что-то вроде этого :

$query = 'SELECT emal FROM info WHERE name = ?'; 
$stmt = mysqli_stmt_prepare($conn1, $query); 
mysqli_stmt_bind_params($stmt, 's', $name); 
$results = mysqli_stmt_execute($stmt);` 

Для лучшего чтения кода, ознакомьтесь с объектно-ориентированным интерфейсом mysqli или еще лучше используйте PDO.

0

в качестве альтернативы вы можете использовать конкатенацию как

обновления этой линии

$query='select email from info where name= "$name"'; 

с

$query='select email from info where name= "'.$name.'" '; 

или

$query="select email from info where name= '".$name."' ";