首页 > 解决方案 > mysqli的php函数

问题描述

这是我的 fonction.php :

<?php
function connect(){

$servername = "localhost";
$username = "xxx";
$password = "xxxx";
$dbname = "xxx";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);


if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();

                                }

}
?>

但是当我想调用此函数时,它不适用于我的代码:

<?php
include("fonctions.php");
?>


<html>

        <form name="inscription" method="post" action="form.php">
            xxx : <input type="text" name="xxx"/> <br/>
            xxx: <input type="text" name="xxx"<br/>
            <input type="submit" name="valider" value="OK"/>
        </form>

        <?php

        if (isset ($_POST['valider'])){

            $titre=$_POST['xxx'];
            $auteur=$_POST['xxx'];

        connect();

            $sql = 'INSERT INTO xxx (`xxx`, `xxx`) VALUES("'.$xxx.'","'.$xxx.'")';



}
        ?>
    </body>
</html>

在我使用 mysql_connect 之前它更简单,我的功能是这样的:

<?php
function connect(){
    $base = mysql_connect ('localhost', 'root', '');  
    mysql_select_db ('MaBase', $base) ;
}
?>

用我的 mysql 参数创建一个好的包含的最佳方法是什么?感谢大家的帮助。

标签: phpmysqlmysqli

解决方案


在 SQL 语句中使用变量时,包括有关使用 PDO 或 mysqli 和准备好的语句的强制性声明......

您没有向函数传递要使用的 SQL 语句,也没有$sql在函数中定义。

function connect($sql){

用于定义它,然后调用它

$sql_statement="select foo from bar where bee=1";
$res=connect($sql_statement);

您还需要您的函数来返回某种值。

我所做的是创建一个通用函数,它接受一条 SQL 语句和一个位置参数数组,然后该函数使用 PDO 和准备好的语句使用参数执行查询,然后返回一个包含适当数据的数组。$ret[0] 是一个表示成功的布尔值,如果为假,则 [2..N] 包含错误消息,如果为真,则 [2..N] 包含选择的返回记录集,数量插入语句的更新、删除和 last_insert_id 受影响的行(通过在查询字符串上使用正则表达式检测)

这是一次编写的,require_once()用于我工作的大学的 15 个网络应用程序。


推荐阅读