非常具体的问题,如何从$_SESSION
中选择包含第一个,中间名和姓,只有名和姓的?
示例:
$_SESSION['NET']['USER']['NAME']
的输出为'Robert Pasha Biceps'
我在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;
var_dump
仅显示包含整个名称的结果,但有些人只提交名字和姓氏,我也需要结果......
有什么想法吗?
答案 0 :(得分:3)
您需要展开会话并根据您的要求进行转换并将其传递给查询
$array = explode(' ', $_SESSION['NET']['USER']['NAME']);
$fooname = isset($array[0])?$array[0]:""." ". isset($array[2])?$array[2]:"";
并在你的mysql查询中使用这个$fooname
。你的sql将是:
$sql = "SELECT * FROM foo WHERE fooname LIKE '%".$fooname."%' ";
答案 1 :(得分:2)
您需要将名称拆分为多个部分,并且只使用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."'
";
从这些行:
Robert Pasha Biceps
Robert Biceps
Robert Middlename Biceps
罗伯特帕夏 Pasha Biceps
Robert Pasha Triceps
罗伯特其他二头肌
Roberto Pasha Triceps
名为&#34; Robert Pasha Biceps&#34;的查询将选择
Robert Pasha Biceps
Robert Biceps
Robert Middlename Biceps
罗伯特其他二头肌
此外,您应该查找并使用准备好的陈述,以防止&#34; Bobby tables情况&#34;。
答案 2 :(得分:0)
您可以在SQL中使用%:
$string = "SELECT * FROM foo WHERE fooname LIKE '%".$_SESSION['NET']['USER']['NAME']."%' ";
用这种方式如果使用类型名称的每个部分都可以看到结果。