【问题标题】:MySql query not working with variables weird bugMySql 查询不适用于变量奇怪的错误
【发布时间】:2016-03-14 03:30:05
【问题描述】:

我有一个用户 ID 列表,我的目标是使用该 ID 获取每个用户的名称

sql 变量打印:SELECT name FROM users WHERE unique_id = '56d4814fb37cf3.17691034'

如果我复制粘贴查询,则返回名称并与其他 ID 一起使用,但我不希望函数总是返回相同的名称,我想将变量 $userID 添加到我的查询中并返回名字

但这只有在我对 de id 进行硬编码时才有效

public function returnNameByID($userID){
 //User ID: 56d4814fb37cf3.17691034 
	
    $sql =  "SELECT name FROM users WHERE unique_id = '$userID'";
	
  echo $sql; // Prints SELECT name FROM users WHERE unique_id = '56d4814fb37cf3.17691034 '
	
//Doesn't work $name returns Null
//  $stmt = $this->conn->prepare("SELECT name FROM users WHERE unique_id = '$userID'"); 

//Doesn't work $name returns Null
	$stmt = $this->conn->prepare($sql); 

// Works $name returns name of the user
   $stmt = $this->conn->prepare(" SELECT name FROM users WHERE unique_id = '56d4814fb37cf3.17691034 ' "); 

    $stmt->execute();
	
    $result = $stmt->get_result()->fetch_assoc();
	
    $name = $result["name"];

    return $name;

编辑

require_once 'db_functons.php';
$db = new db_functions();

$userID = $_GET['userID'];
$mArray =  array();

$mArray = $db->getFriendsList($userID);
//Printing the array Prints the correct id's

$name = $db->returnNameByID($mArray[0]);
echo $name;

【问题讨论】:

  • 我删除了无关的数据库标签。随意为您真正使用的数据库添加标签。
  • '56d4814fb37cf3.17691034 ' 看到尾随空格了吗?删除它。
  • 这一行有效: $stmt = $this->conn->prepare(" SELECT name FROM users WHERE unique_id = '56d4814fb37cf3.17691034 ' ");删除空格没有区别,但这 // $stmt = $this->conn->prepare("SELECT name FROM users WHERE unique_id = '$userID'");这 $stmt = $this->conn->prepare($sql);不要
  • 我使用了 echo gettype ($mArray[0]);打印字符串
  • 问题是函数中的$userID末尾有一些随机的空白字符。在函数的第一行$userID = trim($userID);

标签: php sql


【解决方案1】:

您的代码周围似乎有一些空间尝试使用修剪

$sql =  "SELECT name FROM users WHERE trim(unique_id) = '" . trim($userID) . "';";

【讨论】:

  • 是的,有人明白了。我建议的一件事是添加您可能应该绑定参数 $userID 而不是直接将其插入到查询中(只是很好的做法)
  • 是的,在某些情况下,字符串结构不清楚,而我建议对 var 内容的评估是明确的..
猜你喜欢
  • 2016-12-16
  • 1970-01-01
  • 1970-01-01
  • 2011-09-04
  • 1970-01-01
  • 2022-01-09
  • 2014-04-12
  • 2019-11-29
  • 2017-10-18
相关资源
最近更新 更多