我当前有一个Get变量
$name = $_GET['user'];
我正尝试将其添加到sql语句中,如下所示:
$sql = "SELECT * FROM uc_users WHERE user_name = ". $name;
然后运行
$result = $pdo -> query($sql);
我得到一个无效的列名。但这是没有意义的,因为如果我手动将请求这样放入
$sql = "SELECT * FROM uc_users WHERE user_name = 'jeff'";
我获取列数据,只是当我将其作为get变量输入时没有。我做错了什么。我对PDO比较陌生。
更新:现在我有以下内容:
$name = $_GET['user'];
而且
$sql = "SELECT * FROM uc_users WHERE user_name = :name";
//run the query and save the data to the $bio variable
$result = $pdo -> query($sql);
$result->bindParam( ":name", $name, PDO::PARAM_STR );
$result->execute();
但我得到了
> SQLSTATE[42000]: Syntax error or access violation: 1064 You have an
> error in your SQL syntax; check the manual that corresponds to your
> MySQL server version for the right syntax to use near ':name' at line
> 1
要使带有变量的查询像不带变量的查询一样工作,您需要在变量周围加上引号,因此将查询更改为:
$sql = "SELECT * FROM uc_users WHERE user_name = '$name'";
但是,这容易受到SQL注入的攻击,所以您真正想要的是使用一个占位符,像这样:
$sql = "SELECT * FROM uc_users WHERE user_name = :name";
然后按您现有的方式准备:
$result = $pdo->prepare( $sql );
接下来,绑定参数:
$result->bindParam( ":name", $name, PDO::PARAM_STR );
最后,执行它:
$result->execute();
我有一个脚本需要在一个语句中插入多个内容,比如 长sql是基于条件串联的,并且需要这么长。在phpmyadmin中使用这种sql语句是有效的,并且插入它没有问题,但是JAVA会吐出一个错误。 我可以做些什么来插入这种sql,或者我应该重做我的代码来启动几次以达到相同的结果吗?
问题内容: 这个问题已经在这里有了答案 : 我可以将数组绑定到IN()条件吗? (21个回答) 2个月前关闭。 我对PDO有一个问题,在困扰了一段时间后,我真的很想得到答案。 举个例子: 我将ID数组绑定到PDO语句,以便在MySQL IN语句中使用。 该数组将说: $ values = array(1,2,3,4,5,6,7,8); 数据库安全变量为 $ products = implode(’
问题内容: 这个问题已经在这里有了答案 : 我可以使用PDO准备好的语句来绑定标识符(表或字段名)或语法关键字吗? (1个答案) 去年关闭。 是否可以在准备好的MySQL语句中将列名作为参数传递?请看以下示例: PDO 在每个参数周围添加,因此上面的中线变为: 哪个MySQL不喜欢。有没有一种方法可以在PDO语句中包含字段名的参数,并接受它们? 否则,我猜我将不得不编写一些不同的PDO语句,具体取
问题内容: 这个问题不太可能对将来的访客有所帮助;它仅与较小的地理区域,特定的时间段或极为狭窄的情况(通常不适用于Internet的全球受众)有关。要获得使该问题更广泛适用的帮助。 7年前关闭。 这行不通吗?还是我做错了?尝试了多种形式,似乎找不到关于该主题的任何可靠信息。有任何想法吗? 问题答案: 如果是一个自我陈述。这就像一个完整的声明。因此,不能在字符串左右连接之间使用它。更好的解决方案是使
问题内容: 这个问题已经在这里有了答案 : 我的PDO声明无效 (1个答案) 2年前关闭。 我正在尝试使用PDO准备好的语句为MySQL数据库上的查询创建正确的错误处理。我希望程序在检测到准备好的语句过程中出现错误时退出。利用PDO准备好的语句过程中的每个步骤都会在失败时返回的事实,我将这种令人讨厌的技巧归纳为: 通过执行以下操作: 两件事情。首先,这是非常冗长而愚蠢的。肯定有更好的办法。显然,我
这样不行吗?还是我做错了?尝试了多个变体,但似乎找不到任何关于这个主题的可靠信息。有什么想法吗?