另一个更新!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) 我可以使用mysql_*具有相同凭据的函数连接到 MySQL。
有没有办法使用 PDO 以USAGE仅具有特权的用户连接到本地 MySQL 数据库?我没有机会设置 的权限ALL,我已将其视为 SO 中类似问题的解决方案。
SQLSTATE[HY000] [2005] Unknown MySQL server host 'localhost,dbname=crmdb' (74)
我使用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\')", \nRun Code Online (Sandbox Code Playgroud)\n\nPHP代码:
\n\n$db = $this->getWritableDB();\n$stmt = $db->prepare($sql);\n$exec = $stmt->execute();\nRun Code Online (Sandbox Code Playgroud)\n\nuuid的数据是脏数据,在我们的日志中是
\n\n\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\nSQLSTATE[HY093]:参数号无效:没有绑定参数。
\n
当我尝试将sql复制到终止符上时,退出mysql登录状态。我认为 uuid 有问题。但我无法弄清楚。谁能帮我?非常感谢!
\n\n\n在转向 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 做同样的事情
我有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
$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,但首先我想测试登录数据是否正确存储在数据库中。
我正在尝试获取数据库的最后一个 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) 我正在做一个简单的 MVC Web 应用程序,它应该对 SQL 数据库执行不同的查询。我Symfony 4用作框架,主要是为了利用其路由功能。
我知道我可以从 Doctrine 中获益,但我想知道:如果有人想使用PDODoctrine来代替它,是否有可能这样做以及应该如何实施。我应该使用 PDO 创建一个可以传递给另一个类的数据库类吗?
我试图在删除用户时从匹配用户 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 版本: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) pdo ×10
php ×10
mysql ×7
exception ×1
laravel ×1
laravel-5.3 ×1
postgresql ×1
session ×1
sqlite ×1
symfony ×1