我们如果需要获取受影响的行数需要使用 MySQLi 的属性 affected_rows 。对于插入语句来说,获取最新插入的数据ID使用的是 insert_id 属性。...执行多条 SQL 语句 执行多条 SQL 语句的能力对于 PDO 来说是无法实现的,不过据说 PDO 是支持的,语句是可以正常执行的,但是我们拿不到完整的返回结果。...如果使用 query() 方法,返回的虽然是 PDOStatement 对象,但是它是无法遍历的。 接下来我们就看看 MySQLi 是如何来执行这个多条语句拼接在一起的 SQL 语句的。...如果是后面的语句错误了,我们需要调用 next_result() 才能获取后面语句的错误信息。 其实这也引出了我们 next_result() 这个方法的作用。...在日常的开发过程中,最好还是一条一条的语句来执行,避免出现各种无法查明的问题而影响我们正常的业务执行。至于到底要不要使用这个能力,还是大家仁者见仁智者见智了。
($conn, $key); // 获取短链接参数并进行转义处理,防止SQL注入攻击 $new_url = str_replace('/', '', $u); // 替换短链接中的斜杠字符...- 无法更新链接!"...; } }else{ echo "无效网址 - 你无法编辑域名!"...- 无法更新链接!"...; } }else{ echo "无效网址 - 你无法编辑域名!"
攻击者通过构造恶意SQL语句,将恶意代码注入到应用程序中,从而获取敏感数据或者对数据库造成破坏。因此,在编写PHP程序时,我们需要采取措施来防止SQL注入攻击。...\//绑定参数$stmt->bind_param(\ss\ $username, $password);//执行查询$stmt->execute();//获取查询结果$result = $stmt->get_result..., $dbname);//获取需要转义的字符串$username = mysqli_real_escape_string($conn, $username);//执行查询$sql = \SELECT *...如果我们将字段类型设置为错误的数据类型,就有可能会导致SQL注入攻击。例如,在创建一个存储用户密码的字段时,我们应该将其数据类型设置为varchar,并且设置合适的长度。...如果我们将其数据类型设置为int,那么就无法存储所有的密码字符,这样就会导致SQL注入攻击。总结在PHP中,SQL注入攻击是一种常见的安全问题。
($conn, $key); // 获取短链接参数并进行转义处理,防止SQL注入攻击 $new_url = str_replace('/', '', $u); // 替换短链接中的斜杠字符...){ echo "success"; }else{ echo "错误...- 无法更新链接!"...; } }else{ echo "无效网址 - 你无法编辑域名!"...; } }else{ echo "错误 - 你必须输入短网址!"; } ?> URL控制 <?
图4-46 从返回结果可以看出,服务器端返回了MySQL的错误(多了一个单引号引起的语法错误),这时回到第一步,在用户名处填写test' order by 1%23,提交后,获取一个新的id=5,当再次访问...id=6时,页面返回错误信息(Unknown column '10' in 'order clause'),如图4-47所示。 图4-47 这说明空白页面就是正常返回。...在用户名处填写-test' union select 1,2,3,4%23,提交后,获取一个新的id=7,再访问double2.php?...id=8,得到user()的结果,如图4-49所示,使用此方法就可以获取数据库中的数据。...由于参数“username”使用addslashes函数进行了转义(转义了单引号,导致单引号无法闭合),参数“password”进行了MD5哈希,所以此处不存在SQL注入漏洞。 <?
/数据库连接错误号码 $mysqli->connect_errno //数据库连接错误内容 $mysqli->connect_error //设置编码 $mysqli->set_charset("utf8mb4...")) //执行sql语句 $result=$mysqli->query($sql); //设置结果类型 返回一行的数据 //MYSQLI_ASSOC, MYSQLI_NUM, or MYSQLI_BOTH...$list[]=$rs; } //执行sql错误内容 $mysqli->error //关闭连接 $mysqli->close(); //结果记录数 $result->num_rows //关闭结果...$result->close(); #课后练习 实现一个db类 方法 __construct 连接数据库 query 执行sql getRow 获取一行 getOne 获取一个字段 getCols...获取一列 getAll 获取多列 insert 插入数据并返回自增id delete 删除数据 update 更新数据
步骤: 1、连接数据库函数 mysqli_connect(主机名,用户名,密码) 返回值是我们一个连接的对象,如何连接失败,报错并且返回false 2、判断错误 mysqli_connect_error...(连接对象) 错误信息,返回错误信息 mysqli_connect_errno(连接对象) 错误号,0代表连接成功,没有错误 3、选择连接数据库函数 mysqli_selecr_db(连接对象,要选择的数据库名...(连接对象,要发送的sql语句) 成功得到一个结果集对象,失败返回false 6、处理结果 6.1获取条目数 a、mysqli_num_rows(结果集对象) 用来获取查询得到的集录条数 仅对select...一次返回一条 4、mysqli_fech_object(结果集对象) 返回的是对象,其中键名是对象成员属性名 6.3获取上一次插入的ID mysqil_insert_id(连接对象) 将上一次插入的数据...data_seek() mysqli_data_seek() 移动结果集中的指针到任意行 num_rows() mysqli_num_rows() 获取结果集中行的数量
// 切换用户 $mysqli->change_user('root2', "123", 'blog_test'); // 错误信息 $res = $mysqli->query( "SELECT *...通过打印 mysqli 的 error_list 属性就可以看到当前的错误信息。 错误信息 紧接着上一段,对于执行语句的错误信息,我们可以通过几个 mysqli 中的属性来获得。...而 mysqli 则可以方便快捷地获取及切换当前数据库所使用的字符集。...获取数据库字符 // 获取数据库字符 var_dump($mysqli->character_set_name()); // string(4) "utf8" character_set_name()...不要以为看到一个 set 关键字就是设置或者修改什么,这个方法是获取当前的字符集信息的。
.mysqli_connect_error(),''; echo '错误码:'.mysqli_connect_errno(),''; exit; } mysqli_set_charset....mysqli_connect_error(),''; echo '错误码:'.mysqli_connect_errno(),''; exit; } mysqli_set_charset...),''; echo '错误码:'.mysqli_errno($this->link),''; echo '错误的SQL语句:'.....mysqli_connect_error(),''; echo '错误码:'.mysqli_connect_errno(),''; exit; } mysqli_set_charset...),''; echo '错误码:'.mysqli_errno($this->link),''; echo '错误的SQL语句:'.
通过PHP做MySQL的客户端 1.2.1 开启mysqli扩展 在php.ini中开启mysqli扩展 extension=php_mysqli.dll 开启扩展后重启服务器,就可以使用mysqli...连接数据库 mysqli_connect(主机IP,用户名,密码,数据库名,端口号) //如果端口号是3306可以省略 mysqli_connect_error():获取连接数据库的错误信息 mysqli_connect_errno...():获取连接数据库的错误编码 mysqli_set_charset(连接对象,字符编码) 代码如下: mysqli) if(mysqli_connect_error()){ echo '错误号:'.mysqli_connect_errno(),''; //显示错误编码...echo '错误信息:'.mysqli_connect_error(); //显示错误信息 exit; } //设置字符编码 mysqli_set_charset($link,'utf8');
'text') or die ("无法正确连接到数据库!")...”等函数来查询,但是无法查询到结果并会通过报错的方式返回结果。...'text') or die ("无法正确连接到数据库!")...'text') or die ("无法正确连接到数据库!")...'text') or die ("无法正确连接到数据库!")
.mysqli_affected_rows($link); else{ echo '错误码:'.mysqli_errno($link),''; echo '错误信息:'.mysqli_error...():执行SQL语句 mysqli_insert_id():获取插入记录自动增长的ID mysqli_affected_rows():获取受影响的记录数 mysqli_error():获取执行SQL语句的错误信息...mysqli_errno():获取执行SQL语句的错误码 1.3.2 数据查询语句 数据查询用select、desc、show,成功会返回结果集,失败返回false <?...php //1、连接数据库 $link=@mysqli_connect('localhost','root','root','data') or die('错误信息:'.mysqli_connect_error...'; //echo '总列数'.mysqli_num_fields($rs),''; //4.5 获取所有数据 //$list=mysqli_fetch_all($rs); //默认是索引数组
flag字段 决定是否上传 需要发送请求的位置 登录 注册 登录成功后第一次加载 新增账单 修改账单 删除账单 代码 登录 登录时向服务器发送用户名和密码,当然只有两个结果:未注册 和 密码错误...return 2; } } return 0; } /**获取该用户下所有账单 * @param $table 表名 * @param $user 用户名 * @...return int|string 0:连接失败或无法查询 string:json数组; */ function getUserTally($table,$user){ $con = connectDBandSelectTable...($con); return json_encode($results); } } //连接失败或无法查询 return 0; } /*...getPostJsonValue($table){ //获取post数据 $postValue = file_get_contents("php://input"); //json解析
在PHP7中已经废除了mysql库了,则只能使用mysqli及PDO mysqli面向对象风格 mysqli->connect_errno); } $mysqli->set_charset('UTF-8'); // 设置数据库字符集 $result = $mysqli->query('select...* from customers'); $data = $result->fetch_all(); // 从结果集中获取所有数据 print_r($data); ?...($link,'select * from customers'); $data = mysqli_fetch_all($result); // 从结果集中获取所有数据 print_r($data);...localhost:3306;dbname=examples;charset=utf8'; $username = 'root'; $password = 'admin123'; try{ // PDO连接数据库若错误则会抛出一个
其实操作方式之类也都比较相似,不外乎以绑定参数为主的一些针对 SQL 语句和获取结果集的操作。...这样在后面的操作中上面的 $stmt 对象就无法使用了。 接下来,我们看看如果绑定了错误的类型会怎么样,以及 MySQLI_STMT 中关于错误信息的提示。...产生错误。...可以看出,MySQLI_STMT 的错误属性和信息基本和 MySQLi 对象的是一样的。 列绑定 除了请求查询语句参数的绑定之外,MySQLI_STMT 也是支持直接绑定列的。...保存结果集及游标移动 最后就是关于游标的移动,上面的测试数据中我们可以查询到 7 条数据,并且第一条数据的 id 是 42 ,通过游标,我们可以不在 SQL 语句中使用 limit 而直接操作结果集来获取需要的数据
($link); 返回错误描述 mysqli_close($link); 关闭连接 mysqli_fetch_assoc($res); 从结果集中取得一行作为关联数组返回 mysqli_num_rows...连接失败, 返回 false // @表示错误抑制符, 可以抑制错误的输出 $link = @ mysqli_connect('127.0.0.1', 'root', 'root', 'test02...( $link, $sql ) ) { echo "删除成功"; } else { echo "删除失败"; // mysqli_error 可以查看错误消息...$res ) { echo "获取数据失败"; echo mysqli_error($link); mysqli_close( $link );...) 遍历二维数组,将数组中数据渲染到页面中 删除功能思路: 获取要删除数据的id 根据id删除数据库中指定的数据 删除完毕,返回列表页 详情展示功能 获取要查看详情数据的id 根据id通过联合查询,获取到需要用数据
// 切换用户 $mysqli->change_user('root2', "123", 'blog_test'); // 错误信息 $res = $mysqli->query( "SELECT * FROM...通过打印 mysqli 的 error_list 属性就可以看到当前的错误信息。 错误信息 紧接着上一段,对于执行语句的错误信息,我们可以通过几个 mysqli 中的属性来获得。...而 mysqli 则可以方便快捷地获取及切换当前数据库所使用的字符集。...获取数据库字符 // 获取数据库字符var_dump($mysqli->character_set_name()); // string(4) "utf8" character_set_name() 不要以为看到一个...set 关键字就是设置或者修改什么,这个方法是获取当前的字符集信息的。
$this->link){ echo "数据库连接失败"; echo "错误编码".mysqli_errno($this->link)."..."; echo "错误信息".mysqli_error($this->link)."...$res){ echo "sql语句执行失败"; echo "错误编码是".mysqli_errno($this->link)."..."; echo "错误信息是".mysqli_error($this->link)."...$type; return $funcname($query); } //获取一条记录,前置条件通过资源获取一条记录 public function getFormSource