草庐IT

php - 将空字符串绑定(bind)到 pdo 准备查询时出现 HY104 Sql 服务器错误

我应该将一个应用程序从mssql函数移动到PDO。一切都运行得很顺利,直到我发现自己遇到了一个我似乎无法解决的小错误。这是我准备好的请求:$req_action="INSERTINTO[".DB_SCHEMA."].[dbo].[".ACTION_TABLE."]([ID_CONTACT],[ID_ADN],[TYPE_ACTION],[MOTIF_ENTRANT],[COMMENTAIRES_APPEL],[CODE_CAMPAGNE],[EMAIL],[SUJET],[STATUT_EMAILING],[DATE_ENVOI],[DELAI_OUVERTURE],[MAIL_CLI

php - mysqli准备好的语句和事务可以一起使用吗?

我想知道的是mysqli的prepare、execute、rollback能不能一起使用?$m=newmysqli($dbhost,$dbuser,$dbpassword,$dbname);$m->autocommit(FALSE);$stmt=$m->prepare("INSERT`table`(`name`,`gender`,`age`)VALUES(?,?,?)");$stmt->bind_param("ssi",$name,$gender,$age);$query_ok=$stmt->execute();$stmt=$m->prepare("INSERT`table`(`nam

php - 准备好的语句不能用整数值执行多次

如何使用不同的整数值正确地重新执行准备好的语句?在重用ODBC准备语句时,显式和隐式绑定(bind)PDO::PARAM_INT存在严重错误。CREATETABLEmytab(colINT,somethingVARCHAR(20));工作:多个字符串$pdoDB=newPDO('odbc:Driver=ODBCDriver13forSQLServer;Server='.DATABASE_SERVER.';Database='.DATABASE_NAME,DATABASE_USERNAME,DATABASE_PASSWORD);$pdoDB->setAttribute(PDO::ATTR

PHP:::准备好的语句:::freeresult():::close()

使用的重要性是什么:$stmt->free_result();$stmt->close();在使用准备好的语句调用数据库之后:$mysqli=newmysqli("database","db","pass","user");$stmt=$mysqli->prepare("SELECTemailFROMusersWHEREid=?");$stmt->bind_param('i',$_SESSION['id']);$stmt->execute();$stmt->bind_result($email);while($stmt->fetch()){echo$email;}$stmt->free

php - 如何从执行的准备好的语句创建 JSON?

我刚刚写了一些基本的PHP代码,如下所示:$pdo=newPDO("mysql:host=localhost;dbname=locationtracker","xxxx","xxxx");$statement=$pdo->prepare("SELECT*FROMwaypoints");$result=$statement->execute();if($result){echo"Success";$resultArray=array();$tmpArray=array();while($row=$statement->fetch()){print_r($row);echo"";$tmpA

php - 准备好的语句如何工作?

我正在编写一些数据库例程,并且正在使用准备好的语句。我的环境是使用PHP5的PDO。我理解准备好的语句主要提供性能优势,以及一些辅助好处,例如不必手动SQL转义输入数据。我的问题是关于性能部分。我在下面有两个getPrice函数的实现,它接受一个产品ID并返回它的价格。getPrice_A在同一脚本执行中的后续调用中重复使用相同的PDOStatement对象。这是必要的还是推荐的?如果是这样,是否有任何方法可以避免在每个模型中的每个get*()中重复此额外代码?getPrice_B在每次调用时创建一个新的PDOStatement对象。DBMS是否会认识到这条语句已经准备好并且仍然能够跳

php - mysqli 使用 fetch_assoc 准备语句

我的目标是能够获取变量(使用php)并在准备好的语句中使用它(使用mysqli),然后使用fetch_assoc。由于某种原因,此代码将不起作用(没有错误)。我有rtm,我还没有发现任何将fetch_assoc与准备好的语句结合起来的东西,所以我不确定它是否可能。感谢任何帮助实现此工作的帮助,这是我当前的代码。$where=$_GET['section'];$mysqli=mysqli_connect("localhost","root","","test");if($stmt=mysqli_prepare($mysqli,"SELECTtitle,img,active,priceFR

php - 将日期参数绑定(bind)到准备好的语句时出错——将 PHP PDO/ODBC 与 SQL Server 一起使用

我有一个与ODBC(v2000.86.359.00)连接到SQLServer(v8.00.2039SP4标准版)数据库的pdo连接。这个有效:$id=486;$duedate='June27,2012';$query="INSERTintoAssetHistory(AssetID,DateDue)Values($id,$duedate);";$noParams=$db->exec($query);$db->query($query);但是如果我尝试使用这样的准备好的语句:$sql='INSERTintoAssetHistory(AssetID,DateDue)Values(:id,:d

php - 在不处理用户输入时使用未经准备的 SQL 查询的潜在危险?

每个人都知道或应该知道参数化查询有助于防止SQL注入(inject)。我看到的所有教程和文档都围绕着使用准备好的SQL查询来处理表单输入。但是当没有任何表单输入时呢?IE。用户登录后的后续查询,例如$stmt="SELECTtheme_preferenceFROMusersWHEREuser_id='1234'";$query=mysqli_query($conn,$stmt);攻击者是否可以通过任何方式利用此漏洞?(假设我正在使用PHP)。 最佳答案 问题不在于SQL查询中写入的数据来源是否为http形式。即使它来自当前请求也不是

java - 以最安全的方式使用准备好的语句

从安全验证的角度来看,两者之间是否有区别:stmt.setObject(1,theObject);和stmt.setString(1,theObject);?我知道在这种情况下theObject是一个String但我有兴趣使这段代码的一部分更通用以涵盖其他情况,并且想知道是否从安全角度考虑输入验证受到影响 最佳答案 可以使用ssetObject(),因为jdbc将尝试为所有java.lang.*类型进行类型解析。但是,以这种方式将任意SQL字符串传递到数据库存在潜在问题-安全漏洞:如果没有对用于构建SQL字符串的任何参数进行非常明智