草庐IT

php - 在没有 PDO 的情况下使用 PHP for SQL Server 防止 SQL 注入(inject)

这个问题在这里已经有了答案:HowtoescapestringsinSQLServerusingPHP?(14个答案)关闭9年前。我可以尽可能多地清理和验证我的输入,但这绝对不能涵盖所有内容,如果我足够努力、足够彻底地擦洗,我将完全删除我的输入。我知道有很多关于这个主题的帖子,但似乎他们总是回到PDO或Mysql(是的-即使有人发布有关SQLServer的帖子,他们收到的一半答案建议mysql_real_escape_string-疯狂的世界)。我不能使用任何一个。即使在我打字时,屏幕右侧会出现一些“类似问题”,但我一直点击各种链接,但没有任何内容能完全回答我的问题。我正在使用SQLS

php - 从单个 PDO 数组实例化多个 PHP 对象(无样板)

如果你想从数据库中获取单个对象,PDO非常有用:$obj=$handle->fetchAll(PDO::FETCH_CLASS,$obj_name);如果您希望在一行中返回多个类类型(例如:在执行JOIN时),PDO的用处不大:$handle->fetchAll(PDO::FETCH_ASSOC);...followedbysomedatamappingontheresultingarray.很好-除了我想出的每一种方法看起来都很糟糕。我的问题是:当该数组的内容可能反射(reflect)全部、没有、部分或超过上课?示例:给定一个PDO从数据库返回的数组$vars=('a'=>1,'b'

php - PDO 使用外键创建表

我在使用带有外键元素的MySQL(PDO)创建表时遇到困难,没有外键表创建正常,但没有我收到此消息:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有误;我曾尝试寻找解决方案并调整代码,但似乎一直遇到这个问题。有解决办法还是我是个笨蛋?setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);//sqltocreatetheactivityregisteredtable$sql="CREATETABLEActivity_Register(Activity_idINT(6)UNSIGNEDAUTO_INCREM

PHP PDO 潜在的逻辑错误

我是PHP新手,想知道为什么这段代码没有向数据库插入任何内容(返回0)。我确定这一定是一个逻辑错误,因为我没有收到任何错误消息。classDbConnection{protected$db_conn;public$db_host="localhost";public$db_name="todo";public$db_user="root";public$db_pass="";functionconnect(){try{$this->db_conn=newPDO("mysql:host=$this->db_host;dbname=$this->db_name",$this->db_use

PHP 5.5.6 随机内存泄漏

在我们从PHP5.3.3迁移到PHP5.5.6和Apache2.4之后,在Kohana上运行的每个站点3.3时不时遇到Outofmemory异常。完整的错误信息PHPFatalerror:Allowedmemorysizeof268435456bytesexhausted(triedtoallocate140316914598360bytes)inUnknownonline0PHP表示它尝试分配127TB内存(末尾的字节数发生变化,但仍然在TB左右)。它完全随机发生。有时您会连续几个小时没有问题,然后突然连续出现1条甚至10条内存不足消息。它发生在所有项目中,无论是连接到MySQL、M

php - 选择带有特殊字符 (ó) 的列名称

我使用PDO连接一个ms-access数据库,其中有一个名为Instalación的列:$db=newPDO("odbc:DRIVER={MicrosoftAccessDriver(*.mdb)};Dbq=my/path/to/file.mdb");$str="SELECT*FROMtable";$qr=$db->query($str);if($qr!=false){while($result=$qr->fetch(PDO::FETCH_ASSOC)){print_r($result);}}else{print_r($db->errorInfo());}我得到了这样的东西:[Insta

PHP PDO GO 附近语法不正确,MSSQL 到 sqlsrv

这个问题在这里已经有了答案:Incorrectsyntaxnear'GO'(9个回答)关闭5年前。我在使用PHP和PDO执行长MSSQL脚本时遇到问题。它包含一些由GO分隔的批处理语句。如果脚本在ManagementStudio中执行,它就会运行。我已确保行结尾不会导致问题。我还尝试在执行请求之前启用beginTransaction()。返回以下错误:SQLSTATE[IMSSP]:Thisfunctionisnotimplementedbythisdriver.我正在使用IIS8和PHP5.4.16以及pdo_sqlsrv驱动程序脚本的第一部分:USEfoo;IFobject_id(

php - 连接到 mysql 数据库时出错。

它可能是重复的,但我已经遍历了stackoverflow上其他帖子中建议的所有解决方案,但找不到解决方案。setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);?>我遇到的错误如下:fatalerror:未捕获的PDOException:SQLSTATE[HY000][2019]C:\xampp\htdocs\social_network\create_account.php:2中的未知字符集堆栈跟踪:#0C:\xampp\htdocs\social_network\create_account。php(2):PDO->__con

php - PDO::quote() 用于 SQL Server 错误引用包含 ASCII NUL 的字符串

我正在尝试使用pdo_sqlsrv从PHP将ASCIINUL字符(\0又名U+0000)插入到SQLServer数据库中。这是处理PHP序列化字符串的要求,其中包含NUL字符以表示私有(private)/protected变量。但是,关于PDO::quote()的一些事情破坏了字符串。要重现的代码(将DBNAME、USERNAME和PASSWORD替换为适当的值):getMessage());}$str="XX\0XX";header("Content-Type:text/plain");print("Original:".str_replace("\0","{NUL}",$str).

PHP PDO Sqlsrv 总是将每个值作为字符串返回

如何从具有正确字段类型的数据库中获取值?我正在使用PDOSqlsrv从DB中获取数据,并且我总是以字符串形式接收数据,例如:customer_id:"1"我的customer_id字段类型应该是整数是customer_id:1但phone_number字段类型是varchar它返回正确的类型作为字符串,如:phone_number:"12345678"编辑:我使用的是PHP5.5。我已经试过了。$this->dbh->setAttribute(PDO::SQLSRV_ATTR_FETCHES_NUMERIC_TYPE,true);我得到了这个错误Fatalerror:Undefined