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()
Ниже приведены проверенные, проверенные и проверенные методы проверки наличия строки.
(Некоторые из них я использую сам или использовал в прошлом).
Изменить: Я сделал предыдущую ошибку в синтаксисе, где дважды использовал 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.";
}
}
?>
NB:
При работе с формы и POST-массивы, как указано выше, убедитесь, что массивы POST содержат значения, что метод POST используется для формы и сопоставляет именованные атрибуты для входных данных.
Примечание: <input type = "text" name = "var">
- $_POST['var']
соответствует. $_POST['Var']
нет совпадения.
Обратитесь к
Ссылки на проверку ошибок:
Обратите внимание, что API MySQL не смешиваются в если вы можете посетить этот Q & amp; A, и вы используете mysql_
для соединения с (и с запросом).
Проконсультируйтесь с этим:
Если вы используете API mysql_
и не имеете возможности работать с ним, обратитесь к следующему Q & amp; A on Stack:
Функции mysql_*
устарели и будут удалены из будущего Релизы PHP.
Вы также можете добавить ограничение UNIQUE к (a ) строки
Ссылки:
Вы должны выполнить свой запрос и добавить одиночную кавычку в $ 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';
После проверки и до того, как 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