相关疑难解决方法(0)

我的PDO声明不起作用

这是我的PHP sql语句,它在var转储时返回false

$password_md5 = md5($_GET['password']);
$sql = $dbh->prepare('INSERT INTO users(full_name, e_mail, username, password, password_plain) VALUES (:fullname, :email, :username, :password, :password_plain)');
$result = $sql->execute(array(
                    ':fullname' => $_GET['fullname'], 
                    ':email' => $_GET['email'], 
                    ':username' => $_GET['username'],
                    ':password' => $password_md5,
                    ':password_plain' => $_GET['password']));
Run Code Online (Sandbox Code Playgroud)

php mysql pdo

37
推荐指数
1
解决办法
7740
查看次数

PHP PDO:SQL查询未返回预期结果

我在PHP中有一个函数(见底部),它查询MySQL数据库.当我使用以下值时:

  • $ map => 1,
  • $ limit => 10,
  • $ from => 0,
  • $ to => CURRENT_TIMESTAMP

使用SQL语句:

SELECT user,
       scoreVal AS score,
       UNIX_TIMESTAMP(timestamp) AS timestamp 
  FROM Score 
 WHERE timestamp >= :from 
   AND timestamp <= :to 
   AND map = :map 
 ORDER BY scoreVal DESC, timestamp ASC 
 LIMIT :limit
Run Code Online (Sandbox Code Playgroud)

在phpMyAdmin中,我得到以下结果:

phpMyAdmin结果

但是PHP PDO返回一个空数组.

我到目前为止尝试调试:

  • 我已经用静态值而不是占位符替换了他准备的SQL查询 - 正确返回
  • 分别尝试每个占位符,用经过测试的硬编码值替换其余的 - 不返回任何内容
  • 我没有将变量传递给占位符,而是在execute(Array())部分传递固定常量. - 什么都不返回.
  • 我在打开mySQL查询日志之后进一步发现,PHP客户端连接,但随后退出而不发送任何查询.

由此,我认为这是函数中占位符的一个问题,但是我一直无法找到他们失败的原因.这很可能发生在PHP端,因为MySQL没有错误抛出错误文件.

这是我正在使用的函数,传入的变量是:

  • $ map => 1,
  • $ limit => 10,
  • $ from => 0,
  • $ to => 0 …

php mysql pdo

6
推荐指数
1
解决办法
831
查看次数

在Yii中使用"emulatePrepare"还是不?

我已经从手动/演示应用程序/其他任何东西复制了Yii数据库连接的未修改(我认为)代码.并且,如果我没有弄错,它'emulatePrepare'=>TRUE默认设置.

然后我发现了这个这个答案以及更多来源,这似乎都声称,使用模拟准备是错误的想法.它是旧版RDBMS(特别是MySQL)的遗留物,不应该用于现代版本的MySQL/PHP.

有人可以证实吗?'emulatePrepare'=>FALSE我们的Yii应用程序应该有吗?

php mysql pdo yii

5
推荐指数
1
解决办法
2841
查看次数

致命错误:调用未定义的方法mysqli :: error()

我可以连接,但是当谈到准备好的声明时,我得到了错误.有什么不对吗?

码:

    // Open connection
    $db = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE);

    //check connection
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    // Create statement object
    $stmt = $db->stmt_init();   

    // sql statement
    $sql = "INSERT INTO ch_users ('uid','admin','password','directory','size','format','locationid') VALUES (?, 1, ?, ?, ?, ?, 1)";

    // Create a prepared statement
    $stmt = $db->prepare($sql) or die($db->error());
Run Code Online (Sandbox Code Playgroud)

php mysqli

1
推荐指数
1
解决办法
7481
查看次数

SQL注入:哪个语句可以阻止更好的SQL注入

我正在使用如下的PDO声明

select * from `admine_user` where `user_id` = ? and passw = ?
$resultfm1 = DB::instance()->prepare($query)->execute
(array($escapedid,$hashedpass))->fetchAll();
Run Code Online (Sandbox Code Playgroud)

我在考虑使用

select * from `admine_user` where `user_id` = :user and passw = :pwd
$resultfm1 = DB::instance()->prepare($query)->execute
(array(":user"=>$escapedid,":pwd"=>$hashedpass))->fetchAll();
Run Code Online (Sandbox Code Playgroud)

以上语句中哪些更好用,可以有效防止SQL注入,因为现在我无法使用 mysql_real_escape_string

php mysql pdo

1
推荐指数
1
解决办法
62
查看次数

标签 统计

php ×5

mysql ×4

pdo ×4

mysqli ×1

yii ×1