Как узнать, есть ли письмо с вашим сайтом с помощью PHP [duplicate]

plyr Попробуйте использовать toString:

# plyr
library(plyr)
ddply(data, .(A,B), summarize, C = toString(C))

Вот некоторые дополнительные альтернативы, также используя toString:

data.table

# alternative using data.table
library(data.table)
as.data.table(data)[, toString(C), by = list(A, B)]

aggregate Это не использует пакеты:

# alternative using aggregate from the stats package in the core of R
aggregate(C ~., data, toString)

sqldf

И вот альтернатива, использующая функцию SQL group_concat с помощью пакета sqldf :

library(sqldf)
sqldf("select A, B, group_concat(C) C from data group by A, B", method = "raw")

dplyr A dplyr альтернатива:

library(dplyr)
data %>%
  group_by(A, B) %>%
  summarise(test = toString(C)) %>%
  ungroup()

21
задан Funk Forty Niner 20 March 2016 в 14:49
поделиться

3 ответа

Ниже приведены проверенные, проверенные и проверенные методы проверки наличия строки.

(Некоторые из них я использую сам или использовал в прошлом).

Изменить: Я сделал предыдущую ошибку в синтаксисе, где дважды использовал mysqli_query().

Ie:

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 чувствительны к регистру.

Обратитесь к

Ссылки на проверку ошибок:

Обратите внимание, что API MySQL не смешиваются в если вы можете посетить этот Q & amp; A, и вы используете mysql_ для соединения с (и с запросом).

  • Вы должны использовать тот же самый из подключения к запросам.

Проконсультируйтесь с этим:

Если вы используете API mysql_ и не имеете возможности работать с ним, обратитесь к следующему Q & amp; A on Stack:

Функции mysql_* устарели и будут удалены из будущего Релизы PHP.

  • Пришло время перейти в 21-й век.

Вы также можете добавить ограничение UNIQUE к (a ) строки

Ссылки:

53
ответ дан Funk Forty Niner 24 August 2018 в 04:30
поделиться

Вы должны выполнить свой запрос и добавить одиночную кавычку в $ email в запросе beacuse, это строка, и удалить is_resource($query) $ query - это строка, результатом $ будет ресурс

$query = "SELECT `email` FROM `tblUser` WHERE `email` = '$email'";
$result = mysqli_query($link,$query); //$link is the connection

if(mysqli_num_rows($result) > 0 ){....}

UPDATE

База в вашем правом изменении:

if(is_resource($query) && mysqli_num_rows($query) > 0 ){
        $query = mysqli_fetch_assoc($query);
        echo $email . " email exists " .  $query["email"] . "\n";

По

if(is_resource($result) && mysqli_num_rows($result) == 1 ){
        $row = mysqli_fetch_assoc($result);
         echo $email . " email exists " .  $row["email"] . "\n";

и вы будете в порядке

UPDATE 2

Лучшим способом должна быть процедура Store, которая выполняет следующий SQL, передающий Email как параметр

SELECT IF( EXISTS (
                  SELECT *
                  FROM `Table`
                  WHERE `email` = @Email)
          , 1, 0) as `Exist`

и извлекает значение в php

Псевдокодиго:

 $query = Call MYSQL_SP($EMAIL);
 $result = mysqli_query($conn,$query);
 $row = mysqli_fetch_array($result)
 $exist = ($row['Exist']==1)? 'the email exist' : 'the email doesnt exist';
6
ответ дан Emilio Gort 24 August 2018 в 04:30
поделиться

После проверки и до того, как INSERT проверяет, существует ли имя пользователя, с помощью mysqli (процедурный). Это работает:

//check if username already exists
       include 'phpscript/connect.php'; //connect to your database

       $sql = "SELECT username FROM users WHERE username = '$username'";
       $result = $conn->query($sql);

       if($result->num_rows > 0) {
           $usernameErr =  "username already taken"; //takes'em back to form
       } else { // go on to INSERT new record
2
ответ дан robhoomph 24 August 2018 в 04:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: