MySqli 中预处理类 stmt

非select 语句(没有结果集的)

1.建立连接数据库

  $mysqli=new mysqli("localhost","root","","sqldb");

2.判断

  if(mysqli_connect_error()){

    echo "连接数据库失败".mysqli_connect_error();

     exit;

  }

3.SQL语句拼装

  $sql="insert into shops(name,price,description) values(?,?,?,?)";

  $sql="update shops set name=?,price=?,num=?,description=?; where id=?";

4.插入SQL 语句

  $stmt=$mysqli->prepare($sql);//比较方便

5.给每一个符号的?传值(绑定参数)

  $stmt->bind_param("sdisi",$name,$price,$num,$description,$id);

6.传值

  $name="zhangsan";

  $price=22.22;

  $num=10;

  $description="very good";

  $id=10;

7.执行

  $stmt->execute();

影响行数:$stmt->insert_id;

最后插入的ID:$stmt->offected_rows;

    $mysqli[email protected]new mysqli("localhost","root","","sqldb");
    if(mysqli_connect_error()){
        echo "连接数据库错误".$mysqli_connect_error();
    }
    /*拼装数据*/
    $sql="insert into shop values (null,?,?,?)";
    $sql="update shop set name=?,price=?,description=? where id=?";
    /*插入数据*/
    $stmt=$mysqli->prepare($sql);
    /*绑定数据*/
    $stmt->bind_param("sdsi", $name, $price, $description, $id);
    /*赋值*/
    $name="zhangsanasdfadfasdfasdf";
    $price=2.3;
    $description="very good";
    $id=1;
    /*执行*/
    $stmt->execute();

select 语句(有结果集的)

1.连接数据库

  $mysqli=new mysqli("localhost","root","","sqldb");

2.判断数据库

  if(mysqli_connect_error()){

    echo "Error:".mysqli_connect_error();

  }

3.拼接数据库

  $sql="select id,name,price,description where id=?";

4.插入数据库

  $stmt=$myqli->prepare($sql);

5.绑定数据库

  $stmt->bind_param(i,$id);

6.绑定结果集

  $stmt->bind_result($id,$name,$price,$description);

7.赋值

  $id=10;

8.执行

  $stmt->execute();

9.取出结果集

  $stmt->store_result();

10.while 查看结果

  while($stmt->fetch()){

    echo "$id---$name---$price--$description";

  }

11.关闭结果集

  $stmt->free_result();

12.关闭数据库

  $stmt->close();

<?php
    $mysqli= @new MySQLi("localhost","root","","sqldb");
    if(mysqli_connect_error()){
        echo "Error:".mysqli_connect_error();
    }
    /*拼装SQL*/
    $sql="select id,name,price,description from shop where id<?";
    /*插入*/
    $stmt=$mysqli->prepare($sql);
    var_dump($stmt);
    /*绑定*/
    $stmt->bind_param(i,$id);
    /*绑定结果集*/
    $stmt->bind_result($id,$name,$price,$description);
    /*赋值*/
    $id=10;
    /*执行*/
    $stmt->execute();
    /*取出结果集*/
    $stmt->store_result();
    echo "<table border=‘1‘>";
    //字段信息、列信息
    $result=$stmt->result_metadata();
        echo "<tr>";
    while($field=$result->fetch_field()){
        echo "<th>{$field->name}</th>";
    }
        echo "</tr>";
        /*fetch()查看结果集*/
    /*移动数据库指针*/
    //$stmt->data_seek(2);
    while($stmt->fetch()){
        echo "<tr>";
        echo "<td>$id</td><td>$name</td><td>$price</td><td>$description</td>";
        echo "</tr>";
    }
    echo "</table>";
    /*关闭结果集*/
    $stmt->free_result();
    /*关闭数据库d*/
    $stmt->close();
?>

MySqli 中预处理类 stmt

时间: 2024-11-11 20:53:29

MySqli 中预处理类 stmt的相关文章

mysqli_stmt预处理类

预处理语句对于防止 MySQL 注入是非常有用的. 预处理语句及绑定参数 预处理语句用于执行多个相同的 SQL 语句,并且执行效率更高. 预处理语句的工作原理如下: 预处理:创建 SQL 语句模板并发送到数据库.预留的值使用参数 "?" 标记 .例如: INSERT INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?) 数据库解析,编译,对SQL语句模板执行查询优化,并存储结果不输出. 执行:最后,将应用绑定的值传递给参数

PHP mysqli方式连接类

分享一个PHP以mysqli方式连接类完整代码实例,有关mysqli用法实例. 一个在PHP中以mysqli方式连接数据库的一个数据库类实例,该数据库类是从一个PHP的CMS中整理出来的,可实现PHP连接数据库类,MySQLi版,兼容PHP4,对于有针对性需要的朋友可根据此代码进行优化和修改.<?php#=================================================================================================

【详细总结】c++中的类

最近刷了一些题,也面试了一些公司,把关于c++中关于类的一些概念总结了一下. 在这里也反思一下,面试前信心满满自以为什么都懂,毫无准备就大胆得去了,然后就觉得自己脸都被打肿了.回来认认真真刷题,这阵子都不敢再去面试了--. 1. 类的访问属性:public,protect,private C++中类的成员变量和函数都带有三种属性中的一种,假如没有特别声明,那么就默认是私有的(除了构造函数).public表示是公开的,对象可以直接调用的变量或者函数:protect表示是保护性的,只有本类和子类函数

C++中的类

摘要:在看Qt时,其中:在.cpp的文件(是类的源文件)---实现槽,在.h的文件中声明槽.  于是打算在这篇随笔中尽可能多的通学C++语言中的类. -------------------------------------------------------------------------------------------------- 一. 在<C/C++程序设计> 吴国凤.吴善立主编中10.3节的---类与对象 1.类和对象的定义 1) 类的声明 实际上类是一种新的数据类型. 它是

静态方法中访问类的实例成员

public class StaticShiLi { static int i=1; int j=2; static void m(){ System.out.println(j);报错 } public static void main(String[] args) { // TODO Auto-generated method stub } } 程序报错,显示无法访问. 疑问:那么怎样在静态方法中访问类的实例成员呢?

Object-C中Category类体验

Object-C开发的时候有的时候会用到Category类,类似于Java和C#中扩展类,就是如果你觉得如果你觉得常用的方法在String中没有,可以根据业务需求和个人喜好写一个扩展类,然后在其中补充自己的方法,如果单纯的扩展已有类型来看基本上是一样的.OC还有可以对已经存在类通过Category进行扩展,这个特点又和C#中的partial class有的类似,先来看下是如何操作的吧: 新建的时候选择Object-C File: 选择类型为Category,第一个是是Categroy名称,第三个

C++中的类所占内存空间总结

C++中的类所占内存空间总结 最近在复习c++的一些基础,感觉这篇文章很不错,转载来,大家看看! 类所占内存的大小是由成员变量(静态变量除外)决定的,成员函数(这是笼统的说,后面会细说)是不计算在内的. 摘抄部分: 成员函数还是以一般的函数一样的存在.a.fun()是通过fun(a.this)来调用的.所谓成员函数只是在名义上是类里的.其实成员函数的大小不在类的对象里面,同一个类的多个对象共享函数代码.而我们访问类的成员函数是通过类里面的一个指针实现,而这个指针指向的是一个table,table

ASP.NET中GUID类

GUID(Global unique identifier)全局唯一标识符,它是由网卡上的标识数字(每个网卡都有唯一的标识号)以及 CPU 时钟的唯一数字生成的的一个 16 字节的二进制值. GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字.例如:6F9619FF-8B86-D011-B42D-00C04FC964FF 即为有效的 GUID 值. 世界上的任何两台计算机都不会生成重复的

文件中的类都不能进行设计,因此未能为该文件显示设计器 VS2008(Visual Studio 2008) x64

项目属性 运行平台x64 Form2 继承 Form1 , Form2 设计器 报错 64位dll  无法加载 DLL 找不到指定的模块 原因Vs2008(Visual Studio 2008)默认 没安装64编译器 安装参照:<http://blog.csdn.net/clever101/article/details/8844314> 安装sp1补丁会报这个, 安装目录:D:\Program Files (x86)\Microsoft Visual Studio 9.0\Microsoft