Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查值是否已存在于行而不是列单元格中_Php_Mysql_Sql - Fatal编程技术网

Php 检查值是否已存在于行而不是列单元格中

Php 检查值是否已存在于行而不是列单元格中,php,mysql,sql,Php,Mysql,Sql,是否可以使用mysql和php检查值是否已插入行而不是列中 例如: id name surname 1 jonh smith 是否可以检查john和smith是否已在同一行注册?是的。您可以使用多个where子句,如下所示: SELECT * FROM `users` WHERE `name` = "john" and `surname` = "smith"; 有关更复杂的可能性,请阅读文档。是的。您可以使用多个where子句,如下所示: S

是否可以使用mysql和php检查值是否已插入行而不是列中

例如:

id       name       surname
1        jonh       smith

是否可以检查john和smith是否已在同一行注册?

是的。您可以使用多个where子句,如下所示:

SELECT * FROM `users` WHERE `name` = "john" and `surname` = "smith";

有关更复杂的可能性,请阅读文档。

是的。您可以使用多个where子句,如下所示:

SELECT * FROM `users` WHERE `name` = "john" and `surname` = "smith";
SELECT 1 FROM 'MYTABLE' WHERE 'NAME' = 'JHON' AND 'SURNAME' = 'SMITH'

有关更复杂的可能性,请阅读文档。

您可以使用GROUP_CONCAT将所有单元格连成一行:

SELECT 1 FROM 'MYTABLE' WHERE 'NAME' = 'JHON' AND 'SURNAME' = 'SMITH'
SELECT * FROM TableA
WHERE FIND_IN_SET('john', GROUP_CONCAT(Id, Name , SurName separator ',')) > 0
AND FIND_IN_SET('smith', GROUP_CONCAT(Id, Name , SurName separator ','))  > 0;

这与名字JOHN and SMITH出现在哪一列无关。您可以使用GROUP_CONCAT将所有单元格连成一行:

SELECT * FROM TableA
WHERE FIND_IN_SET('john', GROUP_CONCAT(Id, Name , SurName separator ',')) > 0
AND FIND_IN_SET('smith', GROUP_CONCAT(Id, Name , SurName separator ','))  > 0;

这与名字JOHN和SMITH出现在哪一列无关。您可以检查行数

select count(id) from table
您还可以检查数据是否已插入

$result=mysql_query(“插入到人员(名称)值('COLE')”); 如果($结果){echo“Success”

}else{echo“Error”

}


您可以检查行数

select count(id) from table
您还可以检查数据是否已插入

$result=mysql_query(“插入到人员(名称)值('COLE')”); 如果($结果){echo“Success”

}else{echo“Error”

}

请试试这个。 在这个查询中,我在name中添加了lcase,并检查了两侧,这样你就可以找到在后面的单词中插入的是哪一个

$qry="SELECT * FROM Table WHERE LCASE(name) = lcase('john') and LCASE(surname) = lcase('smith')";
$run=mysql_query($qry) or die(mysql_error());
if(mysql_num_rows($run)>0)
{
     echo "already registered";
}
请试试这个。 在这个查询中,我在name中添加了lcase,并检查了两侧,这样你就可以找到在后面的单词中插入的是哪一个

$qry="SELECT * FROM Table WHERE LCASE(name) = lcase('john') and LCASE(surname) = lcase('smith')";
$run=mysql_query($qry) or die(mysql_error());
if(mysql_num_rows($run)>0)
{
     echo "already registered";
}

您可以在子句中使用
进行检查

SELECT * FROM `MYTABLE` WHERE (`NAME`, `SURNAME`) IN (('jonh', 'smith'));

您可以在
子句中使用
进行检查

SELECT * FROM `MYTABLE` WHERE (`NAME`, `SURNAME`) IN (('jonh', 'smith'));
通过使用此代码:

$id=$_POST['id'];

$name=$_POST['name'];


$surname=$_POST['surname'];

$result = mysql_query("SELECT id,name,surname FROM tablename WHERE id='".$id."'name='".$name."' and surname='".$surname."'");


$row = mysql_fetch_array($result);


$cnt = mysql_num_rows($result);



if($cnt == 0)
{ 

    enter code here

(Statement);
}
    else
{ 
(Statement);
}
通过使用此代码:

$id=$_POST['id'];

$name=$_POST['name'];


$surname=$_POST['surname'];

$result = mysql_query("SELECT id,name,surname FROM tablename WHERE id='".$id."'name='".$name."' and surname='".$surname."'");


$row = mysql_fetch_array($result);


$cnt = mysql_num_rows($result);



if($cnt == 0)
{ 

    enter code here

(Statement);
}
    else
{ 
(Statement);
}

这听起来像是要插入一条记录,但首先要检查它是否存在

如果您不关心插入是否失败(即,您只想执行插入并知道已插入值),那么您可以在名称和姓氏上设置唯一索引

要进行插入,您可以使用insert IGNORE等等。因此,如果已经存在名称和姓氏的组合,则插入将自动失败:-

INSERT IGNORE INTO sometable(id, name, surname) 
VALUES(NULL, '$name', '$surname') 
如果您需要知道记录的id

INSERT IGNORE INTO sometable(id, name, surname) 
VALUES(NULL, '$name', '$surname') 
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id)

这将在正常的mysql函数中返回新行或现有行的id(视情况而定),以返回插入的行id。

这听起来像是要插入记录,但首先要检查它是否存在

如果您不关心插入是否失败(即,您只想执行插入并知道已插入值),那么您可以在名称和姓氏上设置唯一索引

要进行插入,您可以使用insert IGNORE等等。因此,如果已经存在名称和姓氏的组合,则插入将自动失败:-

INSERT IGNORE INTO sometable(id, name, surname) 
VALUES(NULL, '$name', '$surname') 
如果您需要知道记录的id

INSERT IGNORE INTO sometable(id, name, surname) 
VALUES(NULL, '$name', '$surname') 
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id)


这将在正常的mysql函数中返回新行或现有行的id(视情况而定),以返回插入的行id。

您认为这是检查某些文本框的值是否已保存在数据库中的最佳方法吗?或者你有什么建议?这是一种方法,在我看来更安全。执行请求然后检查错误是一种懒惰且容易出错的方法。因此,例如,如果我在“name”、“姓氏”值(“textbox.name”、“textbox.姓氏”)中插入了“name”=null和“姓氏”=null,那么它会起作用吗?@user3668732正在执行插入操作,但是WHERE没有任何行来检查WHERE子句中的值(即WHERE无效)。您必须先检查该行是否存在,然后再进行插入。您认为这是检查某些文本框的值是否已保存在数据库中的最佳方法吗?或者你有什么建议?这是一种方法,在我看来更安全。执行请求然后检查错误是一种懒惰且容易出错的方法。因此,例如,如果我在“name”、“姓氏”值(“textbox.name”、“textbox.姓氏”)中插入了“name”=null和“姓氏”=null,那么它会起作用吗?@user3668732正在执行插入操作,但是WHERE没有任何行来检查WHERE子句中的值(即WHERE无效)。您必须先检查该行是否存在,然后再进行插入。我喜欢这种灵活性,但是如果要查找完整的单词(因此,如果检查smith但不希望它返回smith),则最好使用FIND_in_SET而不是like.TRUE。更新我的答案,谢谢!非常好地使用了组集合和集合中的查找。但这会带来性能问题:)在最好的时候,检查一个或另一个字段时的性能不会令人满意!我喜欢灵活性,但如果要查找完整的单词(因此,如果检查smith但不希望它返回smith),则最好使用FIND_IN_SET而不是like.TRUE。更新我的答案,谢谢!非常好地使用了组集合和集合中的查找。但这会带来性能问题:)在最好的时候,检查一个或另一个字段时的性能不会令人满意!你的意思是检查是否有一行的名字或姓氏是John,而名字或姓氏是smith?不,我的意思是如果有一行的名字或姓氏是John,姓氏是smith?你的意思是检查是否有一行的名字或姓氏是John,而名字或姓氏是smith?不,我的意思是,如果有一排已经以乔恩为名字,史密斯为姓氏的话