Heim > 类库下载 > PHP类库 > PHP manipuliert die MySQLi-Datenbank

PHP manipuliert die MySQLi-Datenbank

高洛峰
Freigeben: 2019-02-23 15:06:27
Original
1370 Leute haben es durchsucht

Mysql(i)-Unterstützung wurde seit PHP5.0 hinzugefügt, und die neuen Funktionen werden in Form von Objekten hinzugefügt

i bedeutet verbesserte Funktionen, hohe Effizienz und Stabilität

Empfohlene MySQL-Video-Tutorials: „MySQL-Tutorial

Parameter für die Kompilierzeit:

./configure --with-mysql=/usr/bin/mysql_config \ #使用 Mysql ClientLibrary(libmysql)构建
--with-mysqli=mysqlnd \ #使用 Mysql Native Dirver 即mysqlnd
--with-pdo-mysql=mysqlnd #使用 Mysql Native Dirver 即mysqlnd
Nach dem Login kopieren

Aus urheberrechtlichen Gründen ab PHP 5.3 PHP begann, mysqlnd zu verwenden, um libmysql.dll zu ersetzen

mysqlnd ist ein von der Firma Zend entwickelter MySQL-Datenbanktreiber. Im Vergleich zum Original hat er sich in allen Aspekten verbessert

#Kompilieren mit mysqlnd

./configure --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd 加上你的参数
Nach dem Login kopieren

MySQL-Prozess- und Objektmodi unterstützen die drei von

MySQL bereitgestellten Klassen:

   1、mysqli 和连接相关的
   2、MySQLi_Result 处理结果集
   3、mysqli_stmt 预处理类
Nach dem Login kopieren

#Zeichensatz festlegen
set_charset

#Zeichensatz abrufen
Zeichensatzname

Datenbankobjekt abrufen

//创建mysqli对象方式 1
//屏蔽连接产生的错误$mysqli = new mysqli('127.0.0.1', 'root', '', 'test');//只能用函数来判断是否连接成功if(mysqli_connect_errno())
{    echo mysqli_connect_error();
}//创建mysqli对象方式 2 可以设置一些参数$mysqli = mysqli_init();$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 2);//设置超时时间$mysqli->real_connect('127.0.0.1', 'root', '', 'test');
Nach dem Login kopieren

Abfrage: Gibt bei Fehler „false“ zurück, „select“ gibt das Ergebnismengenobjekt erfolgreich zurück , andere geben true zurück, nicht falsch. Dies bedeutet, dass die SQL-Ausführung erfolgreich war

Beispiel ohne Ergebnismenge

$mysqli = mysqli_init();$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 2);//设置超时时间$mysqli->real_connect('127.0.0.1', 'root', '', 'test');$sql = "insert into limove(`name`, `order`) values('aa', 11)";$rst = $mysqli->query($sql);$sql = "delete from limove where id = 221";$rst = $mysqli->query($sql);if($rst === false)
{
    ee($mysqli->errno);
    ee($mysqli->error);
}#影响条数
ee($mysqli->affected_rows);#插入的id
ee($mysqli->insert_id);

ee($mysqli);
Nach dem Login kopieren

Mit Ergebnismenge

$mysqli = mysqli_init();$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 2);//设置超时时间$mysqli->real_connect('127.0.0.1', 'root', '', 'test');$sql = "select * from limove as limove_as";$result = $mysqli->query($sql);if($result === false)
{
    ee($mysqli->errno);
    ee($mysqli->error);
}#行数
ee($result->num_rows);#列数
ee($result->field_count);#字段个数
ee($result->field_count);#获取所有字段的信息$field_arr = $result->fetch_fields();#移动字段的指针
// $result->field_seek(1);#依次获取字段的信息while($field = $result->fetch_field())
{
    ee($field);
}#移动记录指针$result->data_seek(1);#一次获取所有数据$data = $result->fetch_all(MYSQLI_ASSOC);#关联数组方式获取结果集$data = array();$result->data_seek(0); #重置指针到起始while($row = $result->fetch_assoc())
{    $data[] = $row;
}

ee($data);$result->free();$mysqli->close();
Nach dem Login kopieren

Mehrere ausführen Anweisungen gleichzeitig mehrfach abfragen (nicht empfohlen)

Es gibt keine Ergebnismenge. Zu diesem Zeitpunkt kann „betroffene_zeilen“ nur die Nummer der letzten betroffenen Zeile abrufen

$mysqli = mysqli_init();$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 2);//设置超时时间$mysqli->real_connect('127.0.0.1', 'root', '', 'test');$sql_arr = array(
    'insert into limove(id,`name`, `order`) values(null, 1, 2)',        
    'insert into limove(id,`name`, `order`) values(null, 1, 222)',        
    'delete from limove where `order` = 2',        );$sql = implode(';', $sql_arr);$result = $mysqli->multi_query($sql);if($result === false)
{
    ee($mysqli->errno);
    ee($mysqli->error);
}$mysqli->close();
Nach dem Login kopieren

Es gibt eine Ergebnismenge

$mysqli = mysqli_init();$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 2);//设置超时时间$mysqli->real_connect('127.0.0.1', 'root', '', 'test');$sql_arr = array(
    'show tables',        
    'desc select * from limove',        
    'show create table limove',        );$sql = implode(';', $sql_arr);$rst = $mysqli->multi_query($sql);if($rst === false)
{
    ee($mysqli->errno);
    ee($mysqli->error);
}do{    $result = $mysqli->store_result();#获取当前光标所在的结果集    
    $data = $result->fetch_all();
    
    ee($data);
    
}while($mysqli->next_result());#光标移动到下一个结果集$mysqli->close();
Nach dem Login kopieren

Transaktionsverarbeitung:

$mysqli=new mysqli("localhost", "root", "123456", "xsphpdb");    //事务处理    $mysqli->autocommit(0);    $error=true;    $price=50;    $sql="update zh set ye=ye-{$price} where name='zhangsan'";    
    $result=$mysqli->query($sql);    if(!$result){        $error=false;        echo "从张三转出失败
";
    }else{        if($mysqli->affected_rows==0){            $error=false;            echo "张三的钱没有变化";    
        }else{            echo "从张三账号中转出成功!
";
        }
    }    $sql="update zh set ye=ye+{$price} where name='lisi1'";    $result=$mysqli->query($sql);    if(!$result){        $error=false;        echo "从李四转入失败
";
    }else{        if($mysqli->affected_rows==0){            $error=false;            echo "李四的钱没有变化";    
        }else{            echo "向李四账号中转入成功!
";
        }
    }    if($error){        echo "转账成功!";        $mysqli->commit();
    }else{        echo "转账失败!";        $mysqli->rollback();
    }    $mysqli->autocommit(1);    $mysqli->close();
Nach dem Login kopieren

mysqli_stmt:mysqli-Vorverarbeitungsklasse (empfohlen): Stellt eine vorbereitete Anweisung dar, der Server kompiliert SQL nur einmal

Die gleiche Funktion kann mit mysqli und mysqli_result

erreicht werden
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage