функция PHP с MySQL - PullRequest
       2

функция PHP с MySQL

0 голосов
/ 28 ноября 2018

Это мой 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?Спасибо всем за любую помощь.

Ответы [ 4 ]

0 голосов
/ 28 ноября 2018

Кажется, что все вышеприведенные ответы пропущены, что у вас есть две переменные с одинаковыми именами:

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

Обе они называются $ xxx

ЕСЛИ ВЫ ДУМАЛИ, что имена ваших публичныхпеременные не должны быть показаны здесь публично, и измените их на 'xxx', затем, пожалуйста, измените ваш вопрос и не меняйте их на одно и то же имя (например, измените на $ name и $ password, например)

0 голосов
/ 28 ноября 2018

Должно быть,

<?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);
    return false;
}else{
    return $conn;
}

}
?>

Ваш запрос должен быть,

    <?php

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

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

                $connection = connect();

                if($connection != false){
                $sql = 'INSERT INTO xxx (`xxx`, `xxx`) VALUES("'.$xxx.'","'.$xxx.'")';
                $result=$connection->query($sql);

                 if($result){ 
                   echo "done"; 
                 }else{
                   echo "faild";
                 }                

                }


          }
   ?>

Вы должны совершить экскурсию / изучить основы ООП

0 голосов
/ 28 ноября 2018

Для этого я предлагаю вам использовать ООП-подход. Я просто предлагаю это по-своему. Вы можете попробовать это по-разному. Никаких проблем в моем ответе. Я использую два класса: первый класс выполняет все соединения с базой данных и MySQLli действительно спасаются.Преобразование и персонал Другой класс - это класс запросов. Он обрабатывает весь запрашивающий персонал.

database.class.php // databaseconnection

 class DatabaseConnections{
      function connect($databaseNaem){

        try{

          return $connection=mysqli_connect("localhost","user","password",'database');

        }catch(Exception $e){
          echo 'Message:'.$e->getMessage();
        }

      }

      function CloseConnection($dataObject){
        if(mysqli_close($dataObject)){
          return 1;
        }else{
          echo "coudn't Close the Database Connection";
        }
      }



      function convert($connection , $vari){
        return mysqli_real_escape_string($connection,$vari);
      }
    }

     //queryclass
    class Query{


      function queryNoresult($stmt){
        if($stmt->execute()){
          return 1;
        }

      }

      function queryNumOfRows($stmt){
        $stmt->execute();
        $result = $stmt->get_result();
        return mysqli_num_rows($result);
      }


      function QueryResult($stmt){
        $stmt->execute();

        $result = $stmt->get_result();
        return $result;
      }


      function illcallothers($stmt,$callto){
        if($callto == 1){
          return $this->queryNoresult($stmt);
        }if ($callto==2) {
          return $this->queryNumOfRows($stmt);
        }
        if($callto == 3){
          return $this->QueryResult($stmt);
        }

      }
    }

, как вы можете видеть в конце, я создал вызов функцииillcallothers и эта функция принимает то, что вы хотите сделать с вашим запросом, она принимает только 2 параметра

  1. Созданная инструкция
  2. Номер функции

там 3 варианта вthis

  1. если вы вызываете $ query-> illcallothers ($ stmt, 1), это вызывает функцию только для выполнения, наилучшего для удаления и вставки, потому что она возвращает 1, если она успешна

  2. , если вы вызываете $ query-> illcallothers ($ stmt, 2), это вызывает функцию, которая возвращает количество строк, которые не вернули ничего лучшего для проверкиданные доступны перед использованием, пока

  3. , если вы вызываете $ query-> illcallothers ($ stmt, 3), это вернет набор результатов из вашего запроса

Теперь давайте перейдем к выполнению вашей задачи

 //first you have to require the database file

  require_once('database.class.php');

 //Then you have to create object from them

 $mymainObj = new DatabaseConnections();//obj from database

 $connetion = $mymainObj->connect('databasename');//this will return a connection Object
 $stmt = $connection->stmt_init(); //then the statement you need the connection object to this 
 $query = new Query();//object from the query class

    //i am not going to put form part in here it will get messy
      $titre= $mymainObj->convert($connection,$_POST['xxx']);//calling mysqli realescape funciton in databaseconnection 

      $auteur=$mymainObj->convert($connection,$_POST['xxx']);

    //now you have create the sql
     $sql = 'INSERT INTO xxx (`xxx`, `xxx`) VALUES(?,?)';//when using stmt this how we tell mysql that we have this much parameters and then we pass them after preparing

    if($stmt->prepare($sql)){
       $stmt->bind_param('ss',$title,$author);
    if($query->illcallothers($stmt,1)){
     echo "Query Success";
    }

    }
0 голосов
/ 28 ноября 2018

Включите обязательное утверждение об использовании PDO или mysqli и подготовленные операторы при использовании переменных в своих инструкциях SQL ...

Вы не передаете своей функции оператор SQL для использования или иным образом не определяете $sql вфункция.

function connect($sql){

Для определения и последующего вызова

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

Вам также понадобится ваша функция для возврата какого-либо значения.

Я создал общую функцию, которая принимает оператор SQL и массив позиционных параметров, затем функция использует PDO и подготовленный оператор для выполнения запроса с использованием параметров, а затем возвращает массив с соответствующими данными.$ ret [0] является логическим значением, указывающим на успешность, если false, то [2..N] содержит сообщение (я) об ошибках, если true, тогда [2..N] содержит возвращенный набор записей для выбора, числастроки, на которые влияют update, delete и last_insert_id для оператора вставки (определяется с помощью регулярного выражения в строке запроса)

Это записывается один раз, и require_once() будет доступно во всех 15 веб-приложениях для колледжа Iработа в.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...