草庐IT

PDO_SQLANYWHERE

全部标签

php - 使用 Int 转换的 PDO 准备语句

我正在使用PDO准备语句将数据从外部xml源插入数据库,因为我不100%信任源我对所有变量(包括字符串和整数)使用了bindValue,例如:SQL:INSERTINTOtable(id,int1,int2,string1,string2)VALUES(:id,:int1,:int2,:string1,:string2)在我的PDO函数中:$sth->bindValue(":id",$id,PDO::PARAM_INT);$sth->bindValue(":int1",$int1,PDO::PARAM_INT);$sth->bindValue(":int2",$int2,PDO::PA

php - 使用 PDO 准备语句在 MySQL 中插入 BIT 值

如何使用PDO准备语句在MySQL中插入BIT值?以下是我的尝试和结果。prepare($sql);$stmt->execute(array(0,$value));$id=db::db()->lastInsertId();$sql='SELECT*FROMtestWHEREid='.$id;$stmt=db::db()->query($sql);$rs=$stmt->fetch(PDO::FETCH_ASSOC);echo("Testfor{$value}returnsid{$rs['id']}anddata{$rs['data']}");}date_default_timezone_

php - 在php中使用PDO连接到数据库

我在我的项目中为我的数据库连接编写了这个小类:dsn="mysqli:dbname=$database;host:$host";$this->username=$username;$this->password=$password;$this->database=$database;}publicfunctionconnect(){try{$this->pdo=newPDO($this->dsn,$this->username,$this->password,null);$this->pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EX

php - 在 pdo 中获取多个选择

这个问题在这里已经有了答案:PDOmultiplequeries(1个回答)关闭6年前。问题是我的总行数的输出结果没有显示出来。我的实际代码:prepare("SELECTSQL_CALC_FOUND_ROWS*FROMtableWHEREmark=0ORDERBYidASCLIMIT0,15;SELECTFOUND_ROWS()astotal;");$stmt->execute();if($stmt->rowCount()>0){?>Numberorrows:total;?>fetch(PDO::FETCH_OBJ)){id;?>user;?>}?>不工作的原因可能是什么,我错过了什

php - 对于 PDO 准备语句,我应该使用 bindParam()、bindValue() 还是 execute()

我阅读了这个问题(ShouldIusebindValue()orexecute(array())toavoidSQLinjection?),发现execute(array())和bindParam()在使用PDO和准备好的语句时都可以防止SQL注入(inject)。不过,我还记得在某处读到过,execute()会自动将每个变量视为一个字符串,无论它是否为整数。我的问题是,除了字符串变量之外,这肯定是一个安全问题吗?例如,如果我要通过准备好的查询获取等于1的用户ID,但是通过执行传递的参数将被视为字符串而不是整数。显然这个脚本没有用户输入的方法,并且只支持用户输入,例如更新个人资料、帖子

php - 对 mysql 代码何时使用 PDO 进行注入(inject)证明感到困惑

我了解mysql语句如何易受攻击的基本思想,但每次我尝试寻找有用的指南时,使用PDO实现此目的的方法看起来各不相同。此外,我有时会在stackoverflow上被告知我的代码容易受到攻击,例如前几天有人说以下内容(顺便说一句,这不起作用,但我被教导如何做到这一点:$search=$_GET["search"];$searcharray=explode('|',$search);$query=("SELECTusername,sender,message,subject,timestamp,threadid,msgtypeFROMMessagesWHERE('".implode("'|'

php - 通过 PDO 将 double 插入 MySQL 时的精度损失

我遇到了这种非常烦人的行为,我想知道我是否做错了什么,或者这是否是故意的(如果是,为什么)。每当我在php(5.3)中有一个double类型的变量并且我想将它插入到数据库(MYSQL5.0)的一个double类型的字段中时,该值总是向下舍入到后面的6位数字我使用PDO的时候。所以下面的代码:$stmt=$pdo->prepare("UPDATEsomeTableSETsomeDouble=:somePHPDouble;");$number=0.11124379542256;$stmt->bindValue(':somePHPDouble',$number);$stmt->execute

PHP PDO MySQL IN (?,?,?

我想写一个像这样的MySQL语句:SELECT*FROMsomeTableWHEREsomeIdIN(value1,value2,value3,...)这里的技巧是我不知道IN()中会有多少个值。显然我知道我可以通过字符串操作随时生成查询,但是由于这将在循环中运行,我想知道我是否可以使用PDOPreparedStatement来完成它。类似于:$query=$PDO->prepare('SELECT*FROMsomeTableWHEREsomeIdIN(:idList)');$query->bindValue(':idList',implode(',',$idArray));这可能吗?

php - Mysql PDO Prepared语句效率

我正在接管一个PHP应用程序,该应用程序在每次运行SQL语句时都使用MySQLPDO准备好的语句。我知道当您要对同一语句进行多次迭代时,准备SQL会更有效率。$sth=$dbh->prepare('SELECTname,colour,caloriesFROMfruitWHEREcaloriesexecute(array(150,'red'));$red=$sth->fetchAll();$sth->execute(array(175,'yellow'));$yellow=$sth->fetchAll();但是,我正在接管的应用程序在PDO之上构建了一个调用通用“执行”函数的层,它似乎准

php - MySQL PDO 错误 : 'Data too long for column' when passing a boolean parameter for a BIT column

我发现的唯一类似问题是:InsertphpbooleanintomysqlbitcolumnwithZend_Db但这没有答案。请看下面的简化测试:“允许”列类型是BIT。'roleID'列类型为INT。'permID'列类型为INT。$dbo=newPDO("mysql:dbname=database;host=127.0.0.1","phpuser","pass");$query=$dbo->prepare("INSERTINTOws_role_perms(allow,roleID,permID)VALUES(:allow,:roleID,:permID)");$query->bi