草庐IT

mysqli_affected_rows

全部标签

php - 为什么这个 MySQLI 准备语句允许 SQL 注入(inject)?

今天教学生如何防止SQL注入(inject)时,我有点尴尬。在专业项目中,我使用准备好的语句/参数化查询作为防止SQL注入(inject)的一层(尽管我从未专业地使用过mySQL)。理论上,我认为使用准备好的语句时,SQL注入(inject)是不可能的。但后来这奏效了......$Search=$_GET['s'];$stmt=$mysqli->prepare("SELECT*FROMproductsWHEREid=?");$stmt->bind_param("i",$Search);$stmt->execute();$Results=$stmt->get_result();如果我传递

php - mysqli没有安装?

我收到以下错误:fatalerror:在我的PHP脚本中找不到类“mysqli”我安装了php5.3.3-7,当我运行apt-cacheshowphp5-mysql时得到这个Description:MySQLmoduleforphp5ThispackageprovidesmodulesforMySQLdatabaseconnectionsdirectlyfromPHPscripts.Itincludesthegeneric"mysql"modulewhichcanbeusedtoconnecttoallversionsofMySQL,animproved"mysqli"modulefo

PHP MySQLi INSERT 不工作,没有错误

不同于thisquestion,但类似的是,我在向数据库中添加信息时不会收到错误消息。$sql="INSERTINTO'nlcc_ver1'.'tUsers'('userID','userName','userPassword','userHash','user_first_name','user_last_name','user_corps','is_admin','is_trg','is_sup','is_co')VALUES(NULL,'".$userName."','".$hash."','".$salt."','".$f_name."','".$l_name."','".$c

php - 具有绑定(bind)参数的 PHP MySQLi 准备查询是否安全?

从历史上看,我一直使用mysql_real_escape_string()对于最终接触数据库的用户的所有输入。现在我已经完全转换到MySQLi并且我正在使用带有绑定(bind)参数的准备好的查询,我是否有效地消除了SQL注入(inject)攻击的可能性?我说我不再需要了对吗mysql_real_escape_string()?这是我的理解,也是我一个项目的基础:http://sourceforge.net/projects/mysqldoneright/files/Base/MysqlDoneRight-0.23.tar.gz/download这不是我想出错的事情,尽管现在我已经发布了

Mysql binlog的三种模式statement,row,mixed详解,以及无主键造成复制延时的测试

2.1 Statement模式的概念Statement是基于语句的复制模式。Statement模式将数据库中执行的修改操作记录为SQL语句,再从数据库上执行相同的SQL语句来实现数据同步。2.2 Statement模式的优点Statement模式的优点是简单明了,易于理解和实现。2.3 Statement模式的缺点Statement模式在执行涉及非确定性函数、触发器和存储过程等操作时,可能会导致不一致的结果。1)不支持RU、RC隔离级别;2)binglog日志文件中,上一个事物的结束点是下一个事物的开始点;3)DML、DDL语句都会明文显示;4)对一些系统函数不能准确复制或者不能复制;5)主库

php - 正则表达式挑战 : Capture all the numbers in a specific row

假设我们有这样的文本:...settingsA=9,4.2settingsB=3,1.5,9,2,4,6settingsC=8,3,2.5,1...问题是我如何使用一个步骤捕获特定行中的所有数字?单步意味着:单个正则表达式模式。单一操作(无循环或拆分等)所有匹配都被捕获在一个数组中。假设我想捕获以settingsB=开头的行中出现的所有数字。最终结果应该是这样的:31.59246我失败的尝试:更新1:不幸的是,@Saleem的示例使用了多个步骤而不是单个步骤。我并不是说他的例子不好(它确实有效),但我想知道是否有另一种方法可以做到这一点以及如何做到这一点。有什么想法吗?更新2:@bob

php - 是否可以在使用 bind_param 的同时获取对象? (PHP/MySQLi)

我有一个问题想问你们。我正在努力使我运行MySQL的方式尽可能安全。我目前想知道是否可以在准备好语句、绑定(bind)参数并执行语句后使用MySQLi获取对象。例子:$sql=$mysqli->prepare('SELECT*FROMusersWHEREusername=?;');$sql->bind_param('s',$username);$username='RastaLulz';$sql->execute();$object=$sql->fetch_object();echo$object->mail;我收到以下错误:Fatalerror:Calltoamemberfuncti

php - MySQLI 准备语句 : num_rows & fetch_assoc

下面是一些写得不好且被严重误解的PHP代码,没有错误检查。老实说,我在PHP->MySQLi函数的迷宫中有点挣扎!有人可以提供一个示例,说明如何使用准备好的语句在关联数组中收集结果,同时还从$stmt获取行数吗?下面的代码是我正在玩的。我认为让我失望的一点是在store_result之后使用$stmt值,然后尝试收集一个assoc数组,我不太确定为什么...$mysqli=mysqli_connect($config['host'],$config['user'],$config['pass'],$config['db']);$stmt=$mysqli->prepare("SELECT

PHP/mysqli - 准备语句(在循环中)或 multi_query

我刚刚从使用mysql转向使用PHP中的mysqli扩展。我遇到过两种做同一件事的方法(多个更新查询),每种方法的优缺点是什么?我应该使用其中之一还是完全使用其他东西?循环中的准备语句://preparestatementforeach(whatever){//executestatement}或多查询:foreach(whatever){//buildmanyqueriesintoasinglestring}multi_query(longstring)我知道准备好的语句提供更好的安全性。在PHP中使用mysql时,我听说最好避免在循环中使用UPDATE语句-在循环中执行mysqli

php - mysqli MariaDB 的 header 和客户端库次要版本不匹配

我有这个版本的标题:PHPVersion5.4.4-14+deb7u5ClientAPIheaderversion5.5.31我收到这条消息:警告:mysqli::mysqli():header和客户端库次要版本不匹配。标题:50531图书馆:100004我认为原因是版本不匹配,如何重新编译PHP以匹配mysqli的版本?我正在使用mariadbClientAPIlibraryversion10.0.4-MariaDB谢谢! 最佳答案 当我最近将我的ubuntu服务器升级到13.04时我遇到了同样的问题无论如何这只是来自libmys