2016-12-19 4 views
1

У меня проблема, я пытаюсь выполнять функции, которые могут выполнять sql-синтаксис, но когда я пытаюсь выполнить его mysqli_querry, выведите ошибку, заставив эту функцию понадобиться два параметра. Но у меня есть еще одна функция для подключения к базе данных, как я могу исправить эту проблему?Выполнение функции после подключения к базе данных

function connect_to_database($servername, $username,$password,$dbname) { 
    $conn = new mysqli($servername, $username, $password, $dbname); 
    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 
} 

function execute($get_sql) { 
    $sql[0] = $get_sql; 
    mysqli_query($sql[0]); 
} 

connect_to_database("localhost","root","root","m1_14"); 
execute("INSERT INTO teszt_1 (email,username,order,createdate) VALUES ('[email protected]','test','test',NOW())"); 

ответ

1

это сделать:

mysqli_query нужны два параметра и вы даете только один раз, чтобы дать YOUT execute функции всех параметры для mysqli_query функции

function connect_to_database($servername, $username,$password,$dbname) { 
    $conn = new mysqli($servername, $username, $password, $dbname); 
    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 
    //return connection or define connection as global and use as global scenario 
    return $conn; 
} 

function execute($get_sql, $connect) { 
    $sql[0] = $get_sql; 
    mysqli_query($connect, $sql[0]); 
} 

$connection = connect_to_database("localhost","root","root","m1_14"); 
execute("INSERT INTO teszt_1 (email,username,order,createdate) VALUES ('[email protected]','test','test',NOW())", $connection); 
+1

Вы должны вернуть соединение ... или использовать как глобальный, как я прокомментировал в вашем сообщении – webDev

+0

хорошо работает, спасибо u: D –

3

Вы должны объявить переменные «глобальный» :

<?php 
    $conn = null; // ◄■■■ 
    $result = null; // ◄■■■ 

    function connect_to_database($servername, $username,$password,$dbname) 
    { global $conn; // ◄■■■ 
     $conn = new mysqli($servername, $username, $password, $dbname); 
     if ($conn->connect_error) 
     { 
      die("Connection failed: " . $conn->connect_error); 
     } 
    } 

    function execute($get_sql) 
    { global $conn; // ◄■■■ 
     global $result; // ◄■■■ 
     $sql[0] = $get_sql; 
     $result = mysqli_query($conn,$sql[0]); // ◄■■■ $CONN AND $RESULT. 
    } 

    connect_to_database("localhost","root","root","m1_14"); 
    execute("INSERT INTO teszt_1 (email,username,order,createdate) " . 
      "VALUES ('[email protected]','test','test',NOW())"); 

    execute("select * from teszt_1"); 

    foreach ($result as $row) // ◄■■■ USE $RESULT HERE. 
     echo $row["email"]; 

Gl переменные obal позволяют передавать значения из одной функции в другую.

В случае «вставки» вам не нужен $result, в случае «выбора» вы можете использовать $result для доступа к значениям.

+0

Да, но не могу он это сделать, возвращая просто переменную соединения из своего первого метода (метода подключения)? – webDev

+1

@ShaileshSingh, есть более чем один способ кошки кошки. –

+0

@FaragoRoland, в случае, если вы выполните «выбор», вам понадобится результат. –