2015-10-08 2 views
0

это мой первый вопрос, поэтому, пожалуйста, не жарьте на меня.сравнить запись в базе данных с формой

В настоящее время я работаю над проектом html, php, mysql в школе, и я хочу знать, можно ли сравнить запись формы в html со таблицей в моей базе данных, чтобы получить ее идентификатор.

форма выглядит
Prename: ""
Фамилии:»"

Стола:
ID: '1'
Prename: 'а'
Фамилии: 'хуг'

Теперь, если кто-то заполняет форму и отправляет, я хочу отправить ее функции, которая просматривает базу данных, и если совпадение найдено, возвращает идентификатор.

Спасибо за ваши идеи!

Edit: Как вы хотите, вот что я до сих пор включает в себя код из @Patchesoft
Тем не менее оно не работает

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title></title> 
</head> 
<body> 


<form action="db_class.php" method="post"> 
    <p>Vorname: <input type="text" name="prename"/></p> 
    <p>Nachname: <input type="text" name="last_name"/></p> 
    <input type="submit" name="submit" value="Start"/> 
</form> 
</body> 
</html> 

А для PHP части наш учитель получил нас класс с большим количеством функции для добавления и выбрать из базы данных и т.д. Самого главного:

<?php 


DB::init(...); // The connection is ok. I just delted the login data for purpose 

$prename = mysqli_real_escape_string($_POST['prename']); 
$lastname = mysqli_real_escape_string($_POST['last_name']); 

$result = mysqli_query("SELECT `ID` FROM `user` WHERE `prename` = '" . $prename . "' AND `last_name` = '" . $lastname . "' "); 
if(mysqli_num_rows($result) > 0) { 
    $row = mysqli_fetch_array($result); 
    return $row['ID']; 
} 


echo $result; 

class DB { 

    public static $db = null; 
    public static $insertID; 

    public static function init($dbHost, $dbUser, $dbPassword, $dbName) { 
     self::$db = new mysqli($dbHost, $dbUser, $dbPassword, $dbName); 
     if (self::$db->connect_errno) { 
      $_SESSION['errors'][] = "MySQL connection failed: ". self::$db->connect_error; 
     } 
     self::$db->query("SET NAMES utf8;"); 
    } 

    public static function select($table, $columns = '*', $key=null, $where = null, $limit = null, $debug = false) { 
     $sql = "SELECT " . self::generateColumnList($columns) . " FROM $table"; 
     if ($where != null) { 
      $sql .= " WHERE ".$where; 
     } 
     if ($limit != null) { 
      $sql .= " LIMIT ".$limit; 
     } 
     if ($debug == true) { 
      $_SESSION['debug'][] = __FUNCTION__ . ': $sql is <strong>' . $sql . '</strong>'; 
     } 

     $result = self::$db->query($sql); 
     if (self::$db->errno) { 
      $_SESSION['errors'][] = '<p>select failed: ' . self::$db->error . '<br> statement was: <strong>' . $sql . '</strong></p>'; 
      return array(); 
     } else { 
      $ret = array(); 
      while ($row = $result->fetch_assoc()) { 
       if (!empty($key)){ 
        $ret[$row['id']] = $row; 
       } 
       else 
        $ret[] = $row; 
      } 
      if (count($ret) == 1) { 
       return $ret[0]; 
      } else { 
       return $ret; 
      } 
     } 
    } 
    public static function select2($sql, $debug = false) { 
     $result = self::$db->query($sql); 
     if (self::$db->errno) { 
      $_SESSION['errors'][] = '<p>select failed: ' . self::$db->error . '<br> statement was: <strong>' . $sql . '</strong></p>'; 
      return array(); 
     } else { 
      $ret = array(); 
      while ($row = $result->fetch_assoc()) { 
       if (!empty($key)){ 
        $ret[$row['id']] = $row; 
       } 
       else 
        $ret[] = $row; 
      } 
      if (count($ret) == 1) { 
       return $ret[0]; 
      } else { 
       return $ret; 
      } 
     } 
    } 
+0

Добро пожаловать в SO. В сети есть сотни обучающих программ. Просто используйте большую поисковую систему и возвращайтесь с кодом, чтобы показать нам, что вы пробовали. –

+3

Почему вы думаете, что мы будем жарить вас? Мы самые красивые люди в мире. – CodeGodie

+1

Какой код вы пробовали? можете ли вы «отредактировать» свой исходный вопрос и предоставить этот код? – CodeGodie

ответ

2

Вы хотите, чтобы ваши формы поля ввода в переменные, а затем сделать запрос SQL, который проверяет данные в базе данных. Это довольно просто, но для новичка есть еще кое-что, что нужно учитывать.

1) Санизирующий ввод. Это важно для защиты от атак SQL Injection. Простой ответ - запустить его с помощью функции mysql_real_escape_string(), чтобы очистить переменную, но есть намного лучшие методы, чем это. Посмотрите подготовленные заявления.

2) Подключение к базе данных. Прежде чем выполнять какие-либо запросы к базе данных, вам необходимо подключиться к ней. Это довольно просто сделать, но вам нужно будет посмотреть, как это сделать.

Что касается какого-то базового кода, попробуйте:

$prename = mysqli_real_escape_string($_POST['prename']); 
$lastname = mysqli_real_escape_string($_POST['lastname']); 

// Now check to see if the values match in your database 
// This assumes you have already written your connecting to database code 
$result = mysqli_query("SELECT `ID` FROM `table_name` WHERE `prename` = '" . $prename . "' AND `lastname` = '" . $lastname . "' "); 
if(mysqli_num_rows($result) > 0) { 
    $row = mysqli_fetch_array($result); 
    return $row['ID']; 
} 

Это очень простой script- это то, что я как начало научилось делать. Есть намного лучшие способы сделать это, используя драйверы базы данных PDO. Но если вы просто учитесь что-то делать в PHP и MySQL, это должно вас заставить.

+0

Автоматический -1 для ссылки на долговременные функции 'mysql_ *' в вашем ответе. –

+0

@MikeBrant Упс! Исправлена. – Patchesoft

+0

Хорошо.Думаю, я испортил некоторые направления в этом сообществе. Я даю это попробовать. Наш преподаватель предоставил нам класс php, который связан с нашей базой данных. Таким образом, связь существует, но наш учитель не лучший в обучении нас основным вещам в php, html, mysql ... – Lelsoos

Смежные вопросы