Php 如何选择包含名字和姓氏的所有结果?

Php 如何选择包含名字和姓氏的所有结果?,php,mysql,Php,Mysql,非常具体的问题,我如何从包含名字、中间名和姓氏,仅包含名字和姓氏的$\u会话中进行选择 例如: $\u会话['NET']['USER']['NAME']的输出是'Robert Pasha Biceps' $pdo = new \PDO('mysql:host=localhost;dbname=workflow_teste', 'root', ''); $pdo->setAttribute(\PDO::ATTR_ERRMODE , \PDO::ERRMODE_EXCEPTION); $s

非常具体的问题,我如何从包含名字、中间名和姓氏,仅包含名字和姓氏的
$\u会话
中进行选择

例如:

$\u会话['NET']['USER']['NAME']
的输出是
'Robert Pasha Biceps'

$pdo = new \PDO('mysql:host=localhost;dbname=workflow_teste', 'root', '');

$pdo->setAttribute(\PDO::ATTR_ERRMODE , \PDO::ERRMODE_EXCEPTION);

$string = "SELECT * FROM foo WHERE fooname LIKE '".$_SESSION['NET']['USER']['NAME']."' ";

$statement = $pdo->prepare($string);
$statement->execute();
$result = $statement->fetchAll();
$statement->closeCursor();

echo '<pre>';
var_dump($result);
die;
我真正需要的是
SELECT
中包含的所有
'Robert Biceps'

$pdo = new \PDO('mysql:host=localhost;dbname=workflow_teste', 'root', '');

$pdo->setAttribute(\PDO::ATTR_ERRMODE , \PDO::ERRMODE_EXCEPTION);

$string = "SELECT * FROM foo WHERE fooname LIKE '".$_SESSION['NET']['USER']['NAME']."' ";

$statement = $pdo->prepare($string);
$statement->execute();
$result = $statement->fetchAll();
$statement->closeCursor();

echo '<pre>';
var_dump($result);
die;
$pdo=new\pdo('mysql:host=localhost;dbname=workflow_teste','root','');
$pdo->setAttribute(\pdo::ATTR\u ERRMODE,\pdo::ERRMODE\u异常);
$string=“SELECT*FROM foo WHERE foodname LIKE”“。$\u SESSION['NET']['USER']['NAME'].'”;
$statement=$pdo->prepare($string);
$statement->execute();
$result=$statement->fetchAll();
$statement->closeCursor();
回声';
var_dump($结果);
死亡
var_dump
只显示包含全名的结果,但有些人只提交名字和姓氏,我还需要这些结果


有什么想法吗?

您可以在SQL中使用from%:

$array = explode(' ', $_SESSION['NET']['USER']['NAME']);
$fooname = isset($array[0])?$array[0]:""." ". isset($array[2])?$array[2]:"";

使用这种方法,如果使用类型,则名称的每个部分都可以在结果中看到。

您可以在SQL中使用from%:

$array = explode(' ', $_SESSION['NET']['USER']['NAME']);
$fooname = isset($array[0])?$array[0]:""." ". isset($array[2])?$array[2]:"";

使用这种方法,如果使用类型,则名称的每个部分都可以在结果中看到。

您需要分解您的会话,并根据需要转换它,然后将其传递给查询

$sql = "SELECT * FROM foo WHERE fooname LIKE '%".$fooname."%' ";
并在mysql查询中使用此
$fooname
。您的sql如下所示:

$name = explode(' ', $_SESSION['NET']['USER']['NAME']);
$firstname = $name[0];
$lastname = $name[count($name)-1];
$string = "
    SELECT *
    FROM foo
    WHERE
        fooname LIKE '".$firstname." % ".$lastname."' OR
        fooname = '".$firstname." ".$lastname."'
";

您需要分解您的会话,并根据需要进行转换,然后将其传递给query

$sql = "SELECT * FROM foo WHERE fooname LIKE '%".$fooname."%' ";
并在mysql查询中使用此
$fooname
。您的sql如下所示:

$name = explode(' ', $_SESSION['NET']['USER']['NAME']);
$firstname = $name[0];
$lastname = $name[count($name)-1];
$string = "
    SELECT *
    FROM foo
    WHERE
        fooname LIKE '".$firstname." % ".$lastname."' OR
        fooname = '".$firstname." ".$lastname."'
";

您需要将名称拆分为多个部分,并且只在SQL查询中使用第一部分和最后一部分

从这些行中:

罗伯特·帕夏二头肌
罗伯特二头肌
罗伯特·米德尔name肱二头肌
罗伯特·帕夏
帕夏二头肌
罗伯特·帕夏三头肌
罗伯特其他二头肌
罗伯托·帕夏三头肌

将选择名为“Robert Pasha肱二头肌”的查询

罗伯特·帕夏二头肌
罗伯特二头肌
罗伯特·米德尔name肱二头肌
罗伯特其他二头肌


此外,您应该查找并使用准备好的语句,以防止出现“情况”。

您需要将名称拆分为多个部分,并且只在SQL查询中使用第一部分和最后一部分

从这些行中:

罗伯特·帕夏二头肌
罗伯特二头肌
罗伯特·米德尔name肱二头肌
罗伯特·帕夏
帕夏二头肌
罗伯特·帕夏三头肌
罗伯特其他二头肌
罗伯托·帕夏三头肌

将选择名为“Robert Pasha肱二头肌”的查询

罗伯特·帕夏二头肌
罗伯特二头肌
罗伯特·米德尔name肱二头肌
罗伯特其他二头肌


此外,你应该查找并使用事先准备好的陈述,以防止出现“情况”。

事情就是这样!但是有些名字有两个以上的位置,所以我需要在这里做一个循环,始终取第一个和最后一个位置,对吗?就是这样!但是有些名字有两个以上的位置,所以我需要在这里做一个循环,始终取第一个和最后一个位置,对吗?