标签: pdo

如何在LIMIT子句中应用bindValue方法?

这是我的代码的快照:

$fetchPictures = $PDO->prepare("SELECT * 
    FROM pictures 
    WHERE album = :albumId 
    ORDER BY id ASC 
    LIMIT :skip, :max");

$fetchPictures->bindValue(':albumId', $_GET['albumid'], PDO::PARAM_INT);

if(isset($_GET['skip'])) {
    $fetchPictures->bindValue(':skip', trim($_GET['skip']), PDO::PARAM_INT);    
} else {
    $fetchPictures->bindValue(':skip', 0, PDO::PARAM_INT);  
}

$fetchPictures->bindValue(':max', $max, PDO::PARAM_INT);
$fetchPictures->execute() or die(print_r($fetchPictures->errorInfo()));
$pictures = $fetchPictures->fetchAll(PDO::FETCH_ASSOC);
Run Code Online (Sandbox Code Playgroud)

我明白了

您的SQL语法有错误; 检查与MySQL服务器版本对应的手册,以便在第1行的"15",15'附近使用正确的语法

似乎PDO在SQL代码的LIMIT部分中为我的变量添加单引号.我查了一下我发现了这个我认为相关的错误:http: //bugs.php.net/bug.php?id = 44639

这就是我在看的东西吗?这个bug自2008年4月开始!在此期间我们应该做什么?

我需要构建一些分页,并且需要在发送sql语句之前确保数据是干净的,sql注入安全的.

php mysql sql pdo bindvalue

112
推荐指数
5
解决办法
6万
查看次数

PDO关闭连接

与MySQLi相比,PDO只是一个相当简单的问题.

使用MySQLi,要关闭连接,您可以执行以下操作:

$this->connection->close();
Run Code Online (Sandbox Code Playgroud)

但是对于PDO,它声明您使用以下命令打开连接:

$this->connection = new PDO();
Run Code Online (Sandbox Code Playgroud)

但要关闭您设置的连接null.

$this->connection = null;
Run Code Online (Sandbox Code Playgroud)

这是正确的,这实际上是否会释放PDO连接?(我知道它确实设置为null.)我的意思是MySQLi你必须调用一个函数(close)来关闭连接.PDO是否易于= null断开?或者是否有关闭连接的功能?

php pdo

107
推荐指数
4
解决办法
15万
查看次数

如何使用PDO插入NULL值?

我正在使用这段代码,我感到非常沮丧:

try {
    $dbh = new PDO('mysql:dbname=' . DB . ';host=' . HOST, USER, PASS);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $dbh->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'");
}
catch(PDOException $e)
{
    ...
}
$stmt = $dbh->prepare('INSERT INTO table(v1, v2, ...) VALUES(:v1, :v2, ...)');
$stmt->bindParam(':v1', PDO::PARAM_NULL); // --> Here's the problem
Run Code Online (Sandbox Code Playgroud)

PDO::PARAM_NULL, null, '', 所有这些都失败并抛出此错误:

致命错误:无法通过/ opt /中的引用传递参数2

php mysql null pdo sql-insert

102
推荐指数
5
解决办法
9万
查看次数

我可以在PHP中混合MySQL API吗?

我搜索过网络,到目前为止我所看到的是你可以使用mysql_mysqli_一起意义:

<?php
$con=mysqli_connect("localhost", "root" ,"" ,"mysql");

if( mysqli_connect_errno( $con ) ) {
    echo "failed to connect";
}else{
    echo "connected";
}
mysql_close($con);
echo "Done";
?>
Run Code Online (Sandbox Code Playgroud)

要么

<?php
$con=mysql_connect("localhost", "root" ,"" ,"mysql");
if( mysqli_connect_errno( $con ) ) {
    echo "failed to connect";
}else{
    echo "connected";
}
mysqli_close($con);
echo "Done";
?>
Run Code Online (Sandbox Code Playgroud)

有效,但是当我使用这段代码时,我得到的是:

Connected
Warning: mysql_close() expects parameter 1 to be resource, object given in D:\************.php on line 9
Done
Run Code Online (Sandbox Code Playgroud)

对于第一个和相同的除外mysqli_close().对于第二个.

问题是什么?我不能使用mysql_mysqli在一起?还是正常的?我可以检查连接是否有效吗?(if(mysq...))

php mysql mysqli pdo

102
推荐指数
2
解决办法
1万
查看次数

如何使用LIKE语句创建PDO参数化查询?

这是我的尝试:

$query = $database->prepare('SELECT * FROM table WHERE column LIKE "?%"');

$query->execute(array('value'));

while ($results = $query->fetch()) 
{
    echo $results['column'];
}
Run Code Online (Sandbox Code Playgroud)

php pdo

100
推荐指数
5
解决办法
9万
查看次数

PHP PDO返回单行

更新2:

那么这是最优化的吗?

$DBH = new PDO( "connection string goes here" );

$STH = $DBH -> prepare( "select figure from table1" );

$STH -> execute();

$result = $STH -> fetch();

echo $result ["figure"];

$DBH = null;
Run Code Online (Sandbox Code Playgroud)

更新1:

我知道我可以为sql查询添加限制,但我也想摆脱foreach循环,我不应该这样做.

原始问题:

我有以下脚本,这是一个很好的IMO,因为"foreach"部分,从数据库返回许多行.

如果我知道我将始终只从数据库中获取1行,我该如何优化它.如果我知道我将只从数据库获得1行,我不明白为什么我需要foreach循环,但我不知道如何更改代码.

$DBH = new PDO( "connection string goes here" );

$STH = $DBH -> prepare( "select figure from table1" );

$STH -> execute();

$result = $STH -> fetchAll();

foreach( $result as $row ) {
    echo $row["figure"];
}

$DBH = null;
Run Code Online (Sandbox Code Playgroud)

php pdo

100
推荐指数
6
解决办法
22万
查看次数

在MySQL Linux服务器上安装PDO驱动程序

不久前,我被建议更改我的代码以使用PDO来参数化我的查询并安全地将HTML保存在数据库中.

嗯,这是主要问题:

  1. 我看了http://php.net/manual/en/ref.pdo-mysql.php,我真的不知道应该把那个$ ./configure --with-pdo-mysql字符串放到哪里......

  2. 我正在构建的网站实际上只需要PDO一页.虽然我可能会考虑重写它,但它需要一段时间,我需要很快运行页面,所以我不能完全关闭MySQL.如果我安装PDO,我仍然可以使用mysql_*处理程序吗?

有问题的服务器运行PHP版本5.4.6-1ubuntu1和Apache/2.2.22(Ubuntu).如果重要的话,我也在运行phpMyAdmin数据库.

php mysql pdo install phpmyadmin

98
推荐指数
5
解决办法
33万
查看次数

PDO支持多个查询(PDO_MYSQL,PDO_MYSQLND)

我知道PDO不支持在一个语句中执行多个查询.我一直在谷歌,发现很少有关于PDO_MYSQL和PDO_MYSQLND的帖子.

PDO_MySQL是一个比任何其他传统MySQL应用程序更危险的应用程序.传统的MySQL只允许一个SQL查询.在PDO_MySQL中没有这样的限制,但是您可能会注入多个查询.

From:使用PDO和Zend Framework防止SQL注入(2010年6月;作者Julian)

似乎PDO_MYSQL和PDO_MYSQLND确实支持多个查询,但我无法找到有关它们的更多信息.这些项目是否已停止?现在有没有办法使用PDO运行多个查询.

php mysql pdo

96
推荐指数
3
解决办法
10万
查看次数

清理用户密码

在散列它们并将它们存储在我的数据库中之前,我应该如何逃避或清除用户提供的密码?

当PHP开发人员考虑出于安全目的而考虑哈希用户的密码时,他们往往会像对待任何其他用户提供的数据一样考虑这些密码.这个主题经常出现在与密码存储相关的PHP问题中; 开发人员经常希望使用诸如escape_string()(在各种迭代中)等功能清理密码htmlspecialchars(),addslashes()然后再对其进行散列并将其存储在数据库中.

php sql hash pdo

95
推荐指数
2
解决办法
5100
查看次数

如何正确设置PDO连接

我不时会看到有关连接数据库的问题.
大多数答案不是我这样做的方式,或者我可能没有正确得到答案.无论如何; 我从来没有想过这个,因为我这样做对我有用.

但这是一个疯狂的想法; 也许我这样做是错的,如果是这样的话; 我真的想知道如何使用PHP和PDO正确连接到MySQL数据库并使其易于访问.

我是这样做的:

首先,这是我的文件结构(剥离):

public_html/

* index.php  

* initialize/  
  -- load.initialize.php  
  -- configure.php  
  -- sessions.php   
Run Code Online (Sandbox Code Playgroud)

index.php
在最顶端,我有require('initialize/load.initialize.php');.

load.initialize.php

#   site configurations
    require('configure.php');
#   connect to database
    require('root/somewhere/connect.php');  //  this file is placed outside of public_html for better security.
#   include classes
    foreach (glob('assets/classes/*.class.php') as $class_filename){
        include($class_filename);
    }
#   include functions
    foreach (glob('assets/functions/*.func.php') as $func_filename){
        include($func_filename);
    }
#   handle sessions
    require('sessions.php');
Run Code Online (Sandbox Code Playgroud)

我知道有更好或更正确的方法来包含类,但不记得它是什么.还没有时间去研究它,但我认为这是有道理的autoload.类似的东西......

configure.php
这里我基本上只是覆盖一些php.ini -properties并为该站点做一些其他的全局配置

connect.php
我把连接放到一个类上,所以其他类可以扩展这个...

class …
Run Code Online (Sandbox Code Playgroud)

php mysql sql pdo class

91
推荐指数
3
解决办法
9万
查看次数

标签 统计

pdo ×10

php ×10

mysql ×6

sql ×3

bindvalue ×1

class ×1

hash ×1

install ×1

mysqli ×1

null ×1

phpmyadmin ×1

sql-insert ×1