为了好玩,我正在用PDO替换我的应用程序中的mysqli扩展.
有一段时间我需要使用事务+表锁定.
在这些情况下,根据mysql手册,语法需要有点不同.你没有调用START TRANSACTION,而是这样做......
SET autocommit=0;
LOCK TABLES t1 WRITE, t2 READ, ...;
... do something with tables t1 and t2 here ...
COMMIT;
UNLOCK TABLES;
Run Code Online (Sandbox Code Playgroud)
(http://dev.mysql.com/doc/refman/5.0/en/lock-tables-and-transactions.html)
我的问题是,它如何与PDO :: beginTransaction交互?在这种情况下我可以使用PDO :: beginTransaction吗?或者我应该手动发送sql"SET autocommit = 0; ... etc".
感谢您的建议,
我正在学习PDO的绳索.
这是我的sql(WHERE中可以出现的参数数量是变量).
SELECT
ID, title
FROM
table
WHERE
something = ?
ORDER BY
:sort :dir
LIMIT
:start, :results
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
$query = $conn->prepare($sql);
if ($parameters) {
$i = 0;
foreach ($parameters AS $parameter) {
$i++;
$query->bindParam($i, $parameter);
}
}
$query->bindParam(':start', $pagination['start'], PDO::PARAM_INT);
$query->bindParam(':results', $pagination['results'], PDO::PARAM_INT);
$query->bindParam(':sort', $pagination['sort']);
$query->bindParam(':dir', $pagination['dir']);
$query->execute();
Run Code Online (Sandbox Code Playgroud)
......以下是它生成的例外情况:
Invalid parameter number: mixed named and positional parameters
Run Code Online (Sandbox Code Playgroud)
是否无法在同一查询中组合位置参数和命名参数?或者我错过了什么?
谢谢!
我目前正在使用mysqli php扩展.
传统上我使用mysqli_real_escape_string来逃避用户输入.但是,我正在考虑更改代码(希望尽可能少的步骤)来使用预准备语句.
我想明确这一点 - 假设我使用预处理语句来绑定我的所有变量,我可以确信sql注入是不可能的吗?(并完全免除mysqli_real_escape_string?)
谢谢
我知道之前已经问过这个问题,但我没有找到任何看似理想的答案.
我有一个需要登录系统的php应用程序.我无论如何都不是加密专家,而且我对重新发明轮子很谨慎,这种轮子无疑已经多次发明,而且非常好.
我想知道是否有人知道一个好的身份验证组件,可以很容易地集成到现有脚本中,该脚本遵循所有最佳实践,并且当与ssl登录结合使用时,将满足所有合理的安全要求.
我更喜欢一个独立的组件,而不是必须设置某种类型的整个框架.(该应用程序的其余部分不使用框架,我不喜欢必须使用一个框架,只是为了验证.)
谢谢你的帮助,