国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

Mysqli擴展庫增強預處理技術mysqli stmt

2020-03-22 17:04:41
字體:
來源:轉載
供稿:網友
  • 該方案防止sql注入

    wps_clip_image-1584

    注意:這里只需建立一次連接,以后都是發數據即可!

    案例1:利用簡單預處理,往數據庫中執行dml語句插入(更新,刪除同種方法)信息:preparestatment.php


    <?php//創建mysqli對象 $mysqli=new mysqli("localhost","root","123456","test");//創建預編譯對象$sql="insert into user (name,password,email,age) html' target='_blank'>values(?,?,?,?)";$mysqli_stmt=$mysqli->prepare($sql) or die($mysqli->error);$mysqli->query("set names utf8");//綁定參數$name="張三";$password="zs";$email="zs@163.com";$age=26;//參數綁定->給?賦值,這里類型和順序要一致!$mysqli_stmt->bind_param("sssi",$name,$password,$email,$age);$a=$mysqli_stmt->execute();if(!$a){die("操作失敗".$mysqli_stmt->execute());}else {echo " 操作ok ";}//釋放$mysqli->close();

    wps_clip_image-31946

    wps_clip_image-10414

    用命令增加的新記錄!成功!

    如果繼續添加,就不需要再執行$mysqli->prepare()了!

    現在是只發數據,連接也沒斷開,這樣效率會很高!


    <?php//創建mysqli對象 $mysqli=new mysqli("localhost","root","123456","test");//創建預編譯對象$sql="insert into user (name,password,email,age) values(?,?,?,?)";$mysqli_stmt=$mysqli->prepare($sql) or die($mysqli->error);$mysqli->query("set names utf8");//綁定參數$name="張三";$password="zs";$email="zs@163.com";$age=26;//參數綁定->給?賦值,這里類型和順序要一致!$mysqli_stmt->bind_param("sssi",$name,$password,$email,$age);$a=$mysqli_stmt->execute();//每一個語句后面都要有一個執行語句!//繼續添加$name="李四";$password="ls";$email="ls@sohu.com";$age="58";$mysqli_stmt->bind_param("sssi",$name,$password,$email,$age);$a=$mysqli_stmt->execute();$name="王五";$password="ww";$email="ww@sohu.com";$age="109";$mysqli_stmt->bind_param("sssi",$name,$password,$email,$age);$a=$mysqli_stmt->execute();if(!$a){die("操作失敗".$mysqli_stmt->execute());}else {echo " 操作ok ";}//釋放$mysqli->close();

    wps_clip_image-26582

    wps_clip_image-19472

    執行時,一次添加3條記錄!

    案例2:用預處理執行dql語句,查詢id>10的用戶,如何預防sql注入


    <?php//創建mysqli對象$mysqli=new mysqli("localhost","root","123456","test");if(mysqli_connect_error()){die (mysqli_connect_error());}//創建預編譯對象$sql="select id,name,email from user where id>?";$mysqli_stmt=$mysqli->prepare($sql) or die($mysqli->error);$mysqli->query("set names utf8");//綁定參數$id=10;//參數綁定->給?賦值,這里類型和順序要一致!$mysqli_stmt->bind_param("i",$id);//綁定結果集$mysqli_stmt->bind_result($id,$name,$email);//執行$mysqli_stmt->execute();//取出綁定的值while($mysqli_stmt->fetch()){echo "<br/>--$id--$name--$email---";}//關閉資源//釋放結果$mysqli_stmt->free_result();//關閉預編譯語句$mysqli_stmt->close();//關閉鏈接$mysqli->close();

    wps_clip_image-15295

    Id>10的都列出來了!

    wps_clip_image-21327

    地址引用,所以結果能返回回來!

    wps_clip_image-26037

    Sql注入的情況:

    wps_clip_image-15475

    還有一種方式,用limit命令也可導致!

    wps_clip_image-722

    wps_clip_image-12955

    不小心輸入的命令,就可以獲取到更多的信息,這對開發者來說,是非常危險的漏洞!

    wps_clip_image-12928

    案例3:

    wps_clip_image-32066


    <?phpfunction showtable($table_name){$mysqli=new mysqli("localhost","root","123456","test");if (mysqli_connect_error()){die (mysqli_connect_error());}$sql="select * from $table_name";$res=$mysqli->query($sql);echo "共有 行".$res->num_rows."--列=".$res->field_count;$res->free();$mysqli->close();}showtable("user");

    wps_clip_image-5405

    PHP編程

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 温泉县| 泰顺县| 赣榆县| 宁德市| 小金县| 红原县| 高陵县| 万载县| 那曲县| 孙吴县| 卢氏县| 红原县| 丽江市| 绿春县| 景德镇市| 桃江县| 资溪县| 东台市| 根河市| 沙洋县| 濮阳市| 福建省| 腾冲县| 徐水县| 广宗县| 垦利县| 璧山县| 论坛| 沁阳市| 铜川市| 革吉县| 延长县| 封开县| 陇西县| 洱源县| 明水县| 贵阳市| 清水河县| 合肥市| 合水县| 永靖县|