Im vorherigen Artikel „MySQL-Grundkenntnisse“ habe ich über die Installation und die grundlegenden Operationen von MySQL gesprochen (hauptsächlich die Abfrageoperation einer einzelnen SQL-Anweisung). Heute stelle ich einen sehr wichtigen Teil von MySQL vor: die Vorverarbeitung.
Bei MySQLi-Operationen sind häufig die drei Hauptklassen beteiligt: MySQLi-Klasse, MySQL_STMT-Klasse und MySQLi_RESULT-Klasse. Die Vorverarbeitung erfolgt hauptsächlich über die Klasse MySQL_STMT.
Die Vorverarbeitung ist ein wichtiges Mittel zur Verhinderung von SQL-Injection und von großer Bedeutung für die Verbesserung der Website-Sicherheit.
Der Fall dieses Artikels ist, dass der Datenbankname test ist, der Datentabellenname test ist, die Felder zwei IDs und Titel haben und die ID den Primärschlüssel automatisch erhöht.
<?php define("HOST", "localhost");define("USER", 'root');define("PWD", '');define("DB", 'test');$mysqli=new Mysqli(HOST,USER,PWD,DB);if ($mysqli->connect_errno) { "Connect Error:".$mysqli->connect_error; }$mysqli->set_charset('utf8');$id='';$title='title4';//用?代替 变量$sql="INSERT test VALUES (?,?)";//获得$mysqli_stmt对象,一定要记住传$sql,预处理是对sql语句的预处理。$mysqli_stmt=$mysqli->prepare($sql);//第一个参数表明变量类型,有i(int),d(double),s(string),b(blob)$mysqli_stmt->bind_param('is',$id,$title);//执行预处理语句if($mysqli_stmt->execute()){ echo $mysqli_stmt->insert_id; }else{ echo $mysqli_stmt->error; }$mysqli->close();
Verwenden Sie MySQLi-Vorverarbeitung, um SQL-Injection zu verhindern:
$id='4';$title='title4';$sql="SELECT * FROM test WHERE id=? AND title=?";$mysqli_stmt=$mysqli->prepare($sql);$mysqli_stmt->bind_param('is',$id,$title);if ($mysqli_stmt->execute()) { $mysqli_stmt->store_result(); if($mysqli_stmt->num_rows()>0){ echo "验证成功"; }else{ echo "验证失败"; } } $mysqli_stmt->free_result(); $mysqli_stmt->close();
Verwenden Sie MySQLi-Vorverarbeitung, um Abfragen auszuführen Aussage:
$sql="SELECT id,title FROM test WHERE id>=?";$mysqli_stmt=$mysqli->prepare($sql);$id=1;$mysqli_stmt->bind_param('i',$id);if($mysqli_stmt->execute()){ $mysqli_stmt->store_result(); //将一个变量绑定到一个prepared语句上用于结果存储 $mysqli_stmt->bind_result($id,$title); while ($mysqli_stmt->fetch()) { echo $id.' :'.$title.'<br/>'; } }
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Vorverarbeitungsbeispiele der PHP-MySQL-Erweiterung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!