这是我在这里的第一篇文章,我对编程世界也比较陌生。为了简短起见,在总结我使用php、mysql和javascript/jquery开发的电子商务站点时,我发现我构建所有查询的方式(使用mysql_connect)可能会导致mysql注入和许多其他讨厌的事情。
为了将所有内容转换为更安全的mysqli准备语句,我编写了一个类,其中包含了从数据库中检索信息所需的所有方法,但我不确定我进行查询的方式。
一些代码:类构造函数
class Database {
private $DBH;
public function __construct() {
$this-&g
我正在使用PHP中的MySQLi扩展对MySQL数据库进行一些查询。我需要这样做一个查询:
SELECT col1, col2 FROM mytable WHERE id IN (2, 4, 6);
这是查询的一个具体示例,但是IN关键字后面括号内的is数会有所不同。因为我想使用mysqli->prepare()函数(准备好的语句),所以我会这样做:
$statement->prepare("SELECT col1, col2 FROM mytable WHERE id IN (?)");
$statement->bind_pararm("s"
下面是我尝试使用insert查询的代码:
int insertItems(String name,double amt,String exp)throws Exception{
Connection con=getConnection();
PreparedStatement ps=con.prepareStatement("insert into itemsList (null,name,amt,expire) values (?,?,?,?);");//when I use the 4?s it displays [Exception in thread "
我有一个工作的pdo集成数据库类。我的所有查询都非常有效,但当我试图传递某个值时,我被卡住了。此值为:
DATE_SUB('2010-11-03', INTERVAL 30 DAY)
现在,在我完成了所有的工作之后,query类已经准备好了:
SELECT DATE(added) AS date FROM data WHERE DATE(added) <= ?
当我试图将值:DATE_SUB('2010-11-03', INETRVAL 30 DAY)传递给execute()函数时,没有收到任何结果(但查询正在成功执行)。
我尝试发送原始值'201
我试图将参数传递给查询,而不是编写大量的文本,我将其范围缩小到以下简单的解释。我试图插入的框架是
where pkw_0.keyword in (:kwd)
我使用String[]构造了一个形式为vals="'AVal','BVal'“的字符串,并使用setParameter("kwd",BVal)将其传递给查询;查询返回零结果。但是,如果我手动构造查询并使用mysql控制台,则查询将返回1个预期结果。
因此,我假设要么是单个字符串对于参数不正确,要么是在通过setParameter调用传递值之前需要对值进行一些调整。
我在使用MySQL进行插入查询时遇到了问题。这是我想要做的:
在我的表中的一个字段中,我想插入一堆URL及其各自的标题。我像这样构建这个查询:
?content=<title of webpage>%%<url of webpage>%%<title of webpage>%%<url of webpage>%%
依此类推,这取决于有多少个URL。
问题是,如果URL包含类似"?var=somevalue“的内容,那么我的查询就会中断,因为MySQL会认为我声明了一个新变量。
我如何才能做到这一点?
这是手册中的一个标准插入示例:
my $query = q{
INSERT INTO sales (product_code, qty, price) VALUES (?, ?, ?)
};
my $sth = $dbh->prepare($query) or die $dbh->errstr;
while (<>) {
chomp;
my ($product_code, $qty, $price) = split /,/;
$sth->execute($p
我有一个非常基本的select语句,它会导致列未知错误。当我尝试使用一个字符而不是变量中的数字时,查询的问题就会发生。不知道这和校对有什么关系。
到目前为止,我的情况如下:
$titleno=$_REQUEST['title_no'];
$titleno=mysql_real_escape_string($titleno);
$titleno = utf8_decode($titleno); //tried without this before but didn't work
$query="SELECT * FROM `Titles` WHERE `titl
根据这个,我的理解是我可以在mysql 5.5.6+中运行这样的查询:
set @limit_start=10;
set @limit_offset=10;
select
ID,
AGE,
GENDER
from
PLAYER
limit
@limit_start, @limit_offset;
但是当我像这样运行它时,我会得到一个错误。
mysql> set @limit_start=10;
Query OK, 0 rows affected (0.00 sec)
mysql> set @limit_offset=10;
Query O
就在最近,我已经转向在PHP/MySQL中使用PDO,并转换了几十个查询。它们中的大多数都起作用了,但是这个非常简单的方法在$sql->execute()中抛出一个异常
$sql=$pdo->prepare("SELECT id FROM user WHERE username = :username LIMIT 1");
$sql->execute(array(':username',$username));
PDOStatement::execute() pdostatement.execute SQLSTATEHY093:无效的参数号:
我正在尝试破译PHP程序中的一条特定语句,该程序正在执行Mysql查询。该查询包含?:和?在里面。有什么功能?
$data = db_get_field("SELECT data FROM ?:order_data WHERE order_id = ?i AND type = 'A'", $order_id);
谢谢你的帮助。
克里斯
在变量之前使用"“是什么意思?
例如,此代码中的:userId:
public function removeUser($userId)
{
$command = Yii::app()->db->createCommand();
$command->delete(
'tbl_project_user_assignment',
'user_id=:userId AND project_id=:projectId',
array(':userId'=>$userId,':projectId'=
在节点js中,我曾经运行一个LIKE语句查询来从MYSQL数据库中获取数据,但是,由于性能不佳,我已经更新了我的查询,使用全文搜索(“”语句)。我试着用"?“来运行查询。占位符或使用转义()方法(以避免sql注入),但没有成功。查询只成功运行,没有"?“方法的占位符或转义()方法。
我已经找到了其他的答案,但没有找到解决办法。
代码工作-sql注入易受攻击
function (req,res,next) {
/// req.query.Name is coming from user input of a form
const queryString = "Se
我使用的是PHP7,MySQL。我为我的项目编写了很长时间的代码,现在它有数千个MySQL查询。当时我不知道有事先准备好的声明。
现在,为了避免SQL注入,我想使用准备语句,但很难将它们逐一转换为准备语句。
有任何方法可以解析一个普通语句并使用PHP自动将其转换为准备语句吗?对于每个MySQL查询,在传递给MySQL命令之前,我都会将其传递给MySQL函数。
public function dbquery($query,$dbname,$dbclose="-1")
{
$this->mysqli->select_db($dbname);
我使用MySQL创建了以下数据库: CREATE TABLE tutors (
id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(320) NOT NULL,
description VARCHAR(400) NOT NULL,
image VARCHAR(150) NOT NULL,
applyDate DATE NOT NULL) 其中image列存储我在文件系统中存储的图像的绝对路径。 但是,当我尝试插入用户输入的数据时,例如 arguments = (
我正在使用MySQL与一个快速服务器。
var qstr = "SELECT * FROM fruits WHERE fruitname LIKE '%?%'";
var q = con.query(qstr,req.query.sq, function(err, result) {
if (err) {
res.json({ "status": "error", "code": "DB_ERROR", "t