草庐IT

php - 安全疑虑 : Mysqli vs PDO

这个问题在这里已经有了答案:mysqliorPDO-whataretheprosandcons?[closed](13个答案)关闭6年前。我已经开始创建我的网站,但现在我几乎没有疑虑了。我搜索过,MySqli面向对象很好用,因为您可以准备查询、使用bind_param并执行。我网站上的MySqli如下所示:PHPMySQLIPreventSQLInjection但是,这就够了吗?我的网站需要像这样的好代码来提高SQL注入(inject)的安全性,但它可以让我免受DDoS和污损?回到正题:Mysqli在安全和性能上与PDO不相上下?

PHP PDO "select like"查询

这个问题在这里已经有了答案:CanPHPPDOStatementsacceptthetableorcolumnnameasparameter?(8个答案)关闭6年前。我正在尝试将两个参数绑定(bind)到准备好的PDO选择语句。这是我目前所拥有的:$query="select*frombookswhere?LIKE?";$result=$db->prepare($query);$result->bindValue(1,$searchTerm,PDO::PARAM_STR);$result->bindValue(2,"%$searchValue%",PDO::PARAM_STR);$re

php - 使用 PDO 从多个数据源批量插入

我正在尝试使用PHP/PDO从两个来源将行插入到MySQL表中,即:另一个表(同一个数据库)PHP我正在填写的表格如下所示:TableName:data_sink+-------+-----------+--------------+-----------+|ID|data1|data2|data3|+-------+-----------+--------------+-----------+|1|text_1|aa|8||2|text_2|bb|8||3|text_3|cc|8||4|text_4|dd|8||5|text_5|ee|8||6|text_6|ff|8|+------

php - 在 PDO 准备语句中使用 LAST_INSERT_ID 插入多个表

我知道这个主题有很多问答,但我面临的是一个相当个别的问题,这就是我提出新问题的原因。我将PHP7与mariadb10.x和PHP模板引擎Twig2.x一起使用。我的目标是将数据插入2个相关表(地址、人员)。对于那些不熟悉Twig的人来说,它基本上是一个使用模板帮助分离html和php代码的工具。因此,我的.html文件称为.twig。如果我使用下面的代码,INSERTINTO只会用值填充adresse但person仍然完全是空的。error.log中没有错误消息。我错过了什么?我做错了什么?我还添加了BEGIN;--preparestmt--;COMMIT;以确保此语句属于一起并且应被

php - 我应该在 PDO 事务中运行多个 SELECT 以提高性能吗?

PDO事务是否仅用于UPDATE、INSERT和DELETE,或者如果您将一个事务用于多个SELECT查询,您能否获得性能提升? 最佳答案 从纯粹的观点来看,在SELECT语句上使用事务来“提高性能”是错误的。使用事务确保不会出现数据不一致的情况。从性能的角度来看,锁定表以使其他语句无法访问它以加速您的SELECTs可能有效-但可能有更好的解决方案比起那个来说。例如,在SELECTstatement中使用HIGH_PRIORITY属性:HIGH_PRIORITYgivestheSELECThigherprioritythanasta

PHP:我应该学习 MySQL 扩展还是只学习 PDO?

既然我发现了PHP的MySQL扩展有一些潜在的安全漏洞并且它已经过时了,我是否应该不费心去学习它而只检查PDO和MySQLi扩展?它们之间有什么真正的区别吗?同时学习这三种方法对我有好处吗?还是只学习其中一种或两种就足够了?它们有什么区别,除了一个是过程性的,另一个是面向对象的(我的意思是第二个和第三个扩展)。 最佳答案 MySQL和MySQLi的行为几乎完全相同。我不知道你可以说“学习一个而不是另一个”。实际上,只要您知道自己在做什么,标准MySQL扩展的安全性就没有问题;主要是使用mysql_real_escape_string

php - 新手问题: PDO and MYSQL INSERT Query problem

我正在尝试更加安全并开始使用PDO和准备好的语句。这是向我推荐的,我已经在这两个网站上阅读过:http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/和http://webdevrefinery.com/forums/topic/1272-your-mysql-code-sucks我碰壁了,我不明白为什么以下内容不起作用。我正在尝试插入一行(以记录404错误)。我已经阅读了有关命名和未命名占位符的信息,我认为命名占位符方法更易于维护。我也第一次尝试使用“try”

PHP/MySQL/PDO - 结果为假但没有数据库错误消息?

我有一段代码运行异常。有时有效,有时无效。该服务器有一个绝对古老的PHP副本(5.1.6,已有五年历史,但带有由RedHat手动向后移植的安全补丁)。这是代码,包括我目前在其中的调试行:1,'errorMessage'=>'NouniqueIDentered.Pleasetryagain.',);json_print($details);}//Validateuid.Mustbe64digithexadecimalvalue.$pattern='/^[a-f0-9]{64}$/i';if(preg_match($pattern,$uid)===0){$details=array('er

php - echo PDO 查询用于调试目的

出于调试目的,我如何回显PDO生成的查询以便我可以看到执行的内容? 最佳答案 使用:$PDOStatement->queryString示例代码:$usedParams=array(':id'=>1);echostr_replace(array_keys($usedParams),$usedParams,$stmt->queryString); 关于php-echoPDO查询用于调试目的,我们在StackOverflow上找到一个类似的问题: https://

php - 使用准备好的语句删除带有 PDO 和复选框的多行?

我有这个代码,$q=$dbc->prepare("SELECT*FROMtasksORDERBYdate_timeLIMIT0,15");$q->execute();echo'';while($todo=$q->fetch(PDO::FETCH_ASSOC)){echo''.$todo['date_time'].''.$todo['type'].''.$todo['message'].'';}echo'';除了一件事之外,现在一切都按预期工作,我还没有真正在互联网上找到任何答案。我的while循环总是不止一行,而且几乎总是要从中删除不止一行。因为这个脚本代表表单确实有效但它只会删除最后