Ответ 1
Ниже приведены проверенные, проверенные и проверенные методы проверки наличия строки.
(Некоторые из них я использую сам или использовал в прошлом).
Edit: Я сделал предыдущую ошибку в моем синтаксисе, где я дважды использовал mysqli_query()
. Проконсультируйтесь с редакцией.
То есть:
if (!mysqli_query($con,$query))
который должен быть просто прочитан как if (!$query)
.
- Я прошу прощения за то, что не заметил этой ошибки.
Боковое примечание: '".$var."'
и '$var'
делают то же самое. Вы можете использовать один из них, оба являются допустимым синтаксисом.
Вот два отредактированных запроса:
$query = mysqli_query($con, "SELECT * FROM emails WHERE email='".$email."'");
if (!$query)
{
die('Error: ' . mysqli_error($con));
}
if(mysqli_num_rows($query) > 0){
echo "email already exists";
}else{
// do something
}
и в вашем случае:
$query = mysqli_query($dbl, "SELECT * FROM 'tblUser' WHERE email='".$email."'");
if (!$query)
{
die('Error: ' . mysqli_error($dbl));
}
if(mysqli_num_rows($query) > 0){
echo "email already exists";
}else{
// do something
}
Вы также можете использовать mysqli_
с помощью подготовленного метода:
$query = "SELECT 'email' FROM 'tblUser' WHERE email=?";
if ($stmt = $dbl->prepare($query)){
$stmt->bind_param("s", $email);
if($stmt->execute()){
$stmt->store_result();
$email_check= "";
$stmt->bind_result($email_check);
$stmt->fetch();
if ($stmt->num_rows == 1){
echo "That Email already exists.";
exit;
}
}
}
Или метод PDO с подготовленным выражением:
<?php
$email = $_POST['email'];
$mysql_hostname = 'xxx';
$mysql_username = 'xxx';
$mysql_password = 'xxx';
$mysql_dbname = 'xxx';
try {
$conn= new PDO("mysql:host=$mysql_hostname;dbname=$mysql_dbname", $mysql_username, $mysql_password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
exit( $e->getMessage() );
}
// assuming a named submit button
if(isset($_POST['submit']))
{
try {
$stmt = $conn->prepare('SELECT 'email' FROM 'tblUser' WHERE email = ?');
$stmt->bindParam(1, $_POST['email']);
$stmt->execute();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
}
}
catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
if($stmt->rowCount() > 0){
echo "The record exists!";
} else {
echo "The record is non-existant.";
}
}
?>
- Подготовленные утверждения лучше всего использовать для защиты от SQL-инъекции.
NB:
При использовании форм и массивов POST, как указано выше, убедитесь, что массивы POST содержат значения, что метод POST используется для формы и сопоставляет именованные атрибуты для входов.
- FYI: Формирует значение по умолчанию для метода GET, если не указано объяснение.
Примечание: <input type = "text" name = "var">
- $_POST['var']
. $_POST['Var']
нет совпадения.
- Массивы POST чувствительны к регистру.
Consult:
Ошибка проверки ссылок:
- http://php.net/manual/en/function.error-reporting.php
- http://php.net/manual/en/mysqli.error.php
- http://php.net/manual/en/pdo.error-handling.php
Обратите внимание, что API MySQL не смешиваются, если вы можете посещать этот вопрос и вы используете mysql_
для подключения (и запросов с).
- Вы должны использовать тот же самый из подключения к запросам.
Обратите внимание на следующее:
Если вы используете API mysql_
и не имеете mysql_
работать с ним, обратитесь к следующим вопросам и mysql_
на стек:
Функции mysql_*
устарели и будут удалены из будущих выпусков PHP.
- Это время, чтобы войти в XXI век.
Вы также можете добавить ограничение UNIQUE в (a) строку (строки).
Рекомендации: