标签: pdo

致命错误:在第 0 行、session_start 的 Unknown 中没有堆栈帧的情况下抛出异常

另一个更新!2013 年 2 月 2 日 将 PHP 更新到版本 5.3,现在它给我这条消息,

致命错误:在 [无活动文件] 中未捕获异常“PDOException”,消息“您无法序列化或反序列化 PDO 实例”:0 堆栈跟踪:#0 [内部函数]:PDO->__sleep() #1 {main} 抛出[无活动文件] 第 0 行

但是,我没有使用序列化或反序列化函数......

更新!

这是可行的,但这是不正确且最丑陋的做法。我不想这样做,但我认为这可能会有所帮助

$db    = new PDO("mysql:host=127.0.0.1;dbname=dbname;", "user", "pass");
public function login($user, $pass) {
    global $db;
    //stuff
}
Run Code Online (Sandbox Code Playgroud)

原帖

我刚刚将我的项目文件切换到我的网络主机(它在本地完美运行)。

我收到此错误,致命错误:在第 0 行的未知中没有堆栈帧的情况下抛出异常。

这太有帮助了。我现在只包含一个文件,它是一个具有一个函数的类,该函数计算输入的用户名和密码的 ID,然后根据发现的内容返回 true 或 false。(1 = true,除了 1 = false)。

我正在使用 PDO (mysql),如果我不连接到我的数据库,我不会收到错误,但如果我删除 session_start(); 从我的文档顶部我也没有收到错误。私有$db;

public function __construct() {
    $this->db = new PDO("mysql:host=127.0.0.1;dbname=dbname;", "user", "pass");
    $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
Run Code Online (Sandbox Code Playgroud)

这就是我设置会话的地方,

if(isset($_POST["submit"])) {
    $errors = array(); …
Run Code Online (Sandbox Code Playgroud)

php mysql session pdo exception

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

PDO连接到本地主机(未知的mysql服务器主机)

我可以使用mysql_*具有相同凭据的函数连接到 MySQL。

有没有办法使用 PDO 以USAGE仅具有特权的用户连接到本地 MySQL 数据库?我没有机会设置 的权限ALL,我已将其视为 SO 中类似问题的解决方案。

SQLSTATE[HY000] [2005] Unknown MySQL server host 'localhost,dbname=crmdb' (74)

php mysql pdo

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

PHP 警告:PDOStatement::execute(): SQLSTATE[HY093]: 无效的参数号:没有绑定参数

我使用PDO来执行sql

\n\n
"INSERT INTO zhushou_cost_uid\n(uid,imei,wmac,imsi,channel,supplier,uuid,brand,device_model,os,os_version,app_version,promotion_method,log_source,takeup_date)\n VALUES\n(\'863207010118070\',\'863207010118070\',\'02037ff459cb\',\'460025323359694\',\'sc-hjcx_ins_cgq\',\'\',\'\xef\xbf\xbd\xdc\x9f*c\xef\xbf\xbd1\xef\xbf\xbd]\xef\xbf\xbdy\xef\xbf\xbd.\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd#\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdh\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd!\xef\xbf\xbdo \xef\xbf\xbd\xef\xbf\xbdz\xef\xbf\xbd!Y\xef\xbf\xbd~\xef\xbf\xbd\xef\xbf\xbdt8\xef\xbf\xbdKOd\xef\xbf\xbdxd]\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdsm\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdn%$\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdH\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd[?\xef\xbf\xbdp\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdM\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\',\'KINGSUN\',\'KINGSUN S6\',\'Android\',\'4.1.2\',\'3.2\',\'\',\'1\',\'2015-11-29 03:21:21\')", \n
Run Code Online (Sandbox Code Playgroud)\n\n

PHP代码:

\n\n
$db = $this->getWritableDB();\n$stmt = $db->prepare($sql);\n$exec = $stmt->execute();\n
Run Code Online (Sandbox Code Playgroud)\n\n

uuid的数据是脏数据,在我们的日志中是

\n\n
\n

“uuid”:“\xef\xbf\xbd\xdc\x9f*c\xef\xbf\xbd1\xef\xbf\xbd]\xef\xbf\xbdy\xef\xbf\xbd。\xef\xbf\xbd\ xef\xbf\xbd\xef\xbf\xbd#\xef\xbf\xbd\xef\xbf\xbd\\u0015\xef\xbf\xbdh\\u001a\xef\xbf\xbd\xef\xbf\xbd\xef \xbf\xbd!\\u001c\xef\xbf\xbd\\u0013o \xef\xbf\xbd\\u0013\xef\xbf\xbdz\xef\xbf\xbd\\u0000!Y\xef\xbf\xbd~ \xef\xbf\xbd\xef\xbf\xbdt8\xef\xbf\xbdKOd\xef\xbf\xbdxd]\xef\xbf\xbd\\u0001\xef\xbf\xbd\xef\xbf\xbdsm\\u0016\ xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\\u0001n\\u0013%$\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\ xef\xbf\xbdH\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd[\\u0003?\xef\xbf\xbdp\xef\xbf\xbd\xef\xbf \xbd\xef\xbf\xbdM\xef\xbf\xbd\xef\xbf\xbd\\u001a\xef\xbf\xbd\xef\xbf\xbd"

\n
\n\n

我得到了结果

\n\n
\n

SQLSTATE[HY093]:参数号无效:没有绑定参数。

\n
\n\n

当我尝试将sql复制到终止符上时,退出mysql登录状态。我认为 uuid 有问题。但我无法弄清楚。谁能帮我?非常感谢!

\n\n

在此输入图像描述

\n

php mysql pdo

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

如何检查使用哪个版本的 SQLite PDO?

在转向 PDO 之前我使用了这段代码:

    if (class_exists('SQLiteDatabase')) {
        return 'jargon.db';
    } else if (class_exists('SQLite3')) {
        return 'jargon3.db';
    } else {
        throw new Exception('SQLite not installed');
    }
Run Code Online (Sandbox Code Playgroud)

我怎样才能使用 PDO 做同样的事情

php sqlite pdo

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

使用“?|”执行查询 操作员

我有my_table带有jsonb列的表sentiments。我需要从此列中删除所有键“10216”和“10191”。

我尝试在 Laravel 中做下一步:

DB::table('my_table')
    ->whereRaw("sentiments ?| ARRAY['10216', '10191']")
    ->update([
        'sentiments' => DB::raw("sentiments - '10216' - '10191'")
    ]);
Run Code Online (Sandbox Code Playgroud)

但我有下一个错误:

[Illuminate\Database\QueryException]                                                                                 
  SQLSTATE[42601]: Syntax error: 7 ??????:  ?????? ?????????? (????????? ?????????: "$1")                              
  LINE 1: ...= sentiments - '10216' - '10191' where sentiments $1| ARRAY[...                                           
                                                               ^ (SQL: update "my_table" 
    set "sentiments" = sentiments - '10216' - '10191' 
    where sentiments ?| ARRAY['10216', '10191'])
Run Code Online (Sandbox Code Playgroud)

因为正如我所看到的“?” 看起来像参数。如何逃避这个符号?

更新

我也试着写两个问题sentiments ??| ARRAY::

[Illuminate\Database\QueryException]                                                                                 
  SQLSTATE[42883]: Undefined function: 7 ??????:  ???????? …
Run Code Online (Sandbox Code Playgroud)

php postgresql pdo laravel laravel-5.3

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

使用 PDO 插入两行而不是一行 MySQL

我正在尝试将登录数据插入登录表,并且我正在使用以下代码:

登录.php

$verify = password_verify($password, $results['user_password']);
if($verify){
    $session->logUser($results['user_id']);
    header('Location: dashboard.php');
}else{
    //Error
}
Run Code Online (Sandbox Code Playgroud)

然后在session.php我有一个会话类:

public function logUser($userId){
    $_SESSION['userId'] = $userId;

    $token = $this->createToken();
    $timestamp = time() + (86400 * 14);

    $connection = new Connection;
    $db = $connection->openConnection();

    $stmt = $db->query("INSERT INTO logins (login_token, login_userId, login_expires) VALUES ('$token', '$userId', '$timestamp')");
    $stmt->execute();
}
Run Code Online (Sandbox Code Playgroud)

这工作正常,正在生成令牌,并且所有数据都是正确的,但是当我检查数据库时,它正在创建两条记录(相同的记录但具有不同的 auto_increment ID)。

为什么会这样?提前致谢。

编辑:我正在尝试创建持久登录来执行此令牌操作,我还没有创建 cookie,但首先我想测试登录数据是否正确存储在数据库中。

php mysql pdo

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

在 PDO 中显示数据库的最后一个 ID

我正在尝试获取数据库的最后一个 ID 号。但它只显示 0。我正在学习 PDO。谁能告诉我我该怎么做?

if($_SERVER['REQUEST_METHOD']=='POST'){
  $sql = "SELECT * FROM tablename";
  $stmt = $pdo->prepare($sql);
  $stmt->execute();
  $row = $stmt ->fetch();
  $showid = $pdo->lastInsertId();
  echo $showid;
}
Run Code Online (Sandbox Code Playgroud)

php mysql pdo

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

是否可以在 Symfony 4 中使用 PDO 而不是 Doctrine?

我正在做一个简单的 MVC Web 应用程序,它应该对 SQL 数据库执行不同的查询。我Symfony 4用作框架,主要是为了利用其路由功能。

我知道我可以从 Doctrine 中获益,但我想知道:如果有人想使用PDODoctrine来代替它,是否有可能这样做以及应该如何实施。我应该使用 PDO 创建一个可以传递给另一个类的数据库类吗?

php pdo symfony

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

为什么此查询不会从所有表中删除详细信息?

我试图在删除用户时从匹配用户 ID 的表中删除记录。但不知何故,它只从 cv 表中删除记录。

我正在尝试的是

if($_GET['deluser'] !='1'){

         $qr = "delete from members where member_id IN(".$_GET['deluser'].")";
         $qr = "delete from company where caller_id IN(".$_GET['deluser'].")";
         $qr = "delete from cv where agent_id IN(".$_GET['deluser'].")";
         $st = $db->prepare($qr);
         $st->execute();        

    header('Location: users.php?action=DELETED');
    exit;
Run Code Online (Sandbox Code Playgroud)

我可能做错了什么?

php mysql pdo

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

为什么 UPDATE 准备好的语句上的 PDO::fetchAll() 会导致“未缓冲的查询处于活动状态”异常?

PHP 版本PHP 7.4.13

我遇到了这个问题,fetchAll()在一个准备好的语句上调用了一个UPDATE查询:

$stmt    = $db->prepare( "UPDATE `table` SET value = value + ? WHERE id = ?" );
$success = $stmt->execute( $arguments );

$result  = $stmt->fetchAll( PDO::FETCH_ASSOC );  // ? This causes the exception
Run Code Online (Sandbox Code Playgroud)

在研究MySQL error 2014 Cannot execute queries while other unbuffered queries are active异常的原因时,这里提出的其他问题似乎没有涵盖这种情况。

为什么会$stmt->fetchAll()在一个UPDATE查询原因下列异常情况发生?

PHP Fatal error:  Uncaught PDOException: SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active.  Consider …
Run Code Online (Sandbox Code Playgroud)

php mysql pdo

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

标签 统计

pdo ×10

php ×10

mysql ×7

exception ×1

laravel ×1

laravel-5.3 ×1

postgresql ×1

session ×1

sqlite ×1

symfony ×1