2010-08-31 5 views
1

Я изучаю PHP и SQL, и я пытаюсь выяснить, как выбрать запись из базы данных. Я создал функцию под названием selectById()Невозможно выбрать запись из базы данных

Сейчас в браузере отображается «Ошибка:», но особой ошибки не было.

// function selectById -------------------------------------------------------------------- 
    function selectById($pUInput) { 
     $sql = mysql_query("SELECT * FROM tblStudents 
          WHERE id='$pUInput[0]'"); 

      if (!mysql_query($sql)) 
       { 
       die('Error: ' . mysql_error()); 
       } 
      echo "Record Selected"; 

    } 

PHP код:

//Call function mainline 

mainline(); 

// Declare the function mainline 
function mainline() { 

    $uInput = getUserInput(); 

    $connectDb = openConnect(); // Open Database Connection 
    selectDb($connectDb); // Select Database 
    doAction($uInput); 
    //display(); 
    //closeConnect(); 

} 

//Declare function getUserInput -------------------------------------------------------- 
function getUserInput() { 

    echo "In the function getUserInput()" . "<br/>"; 

    // Variables of User Input 
    $idnum = $_POST["idnum"];    // id (NOTE: auto increments in database) 
    $fname = $_POST["fname"];    // first name 
    $lname = $_POST["lname"];   // last name 
    $major = $_POST["major"];   // major 
    $year = $_POST["year"];   // year 
    $action = $_POST["action"];  // action (select, insert, update, delete) 

    $userInput = array($idnum, $fname, $lname, $major, $year, $action); 

    return $userInput; 
} 

function doAction($pUserInput) { 
    echo "In function doAction()" . "<br/>"; 

    if ($pUserInput[5] == "sel") { 
     selectById($pUserInput);  

    } elseif ($pUserInput[5] == "ins") { 
     insert($pUserInput);  
    } 

} 

// Create a database connection -------------------------------------------------------- 
function openConnect() { 
    $connection = mysql_connect("localhost", "root_user", "password"); 
     echo "Opened Connection!" . "<br/>"; 

    if(!$connection) { 
     die("Database connection failed: " . mysql_error()); 
    } 

    return $connection; 
} 

// Select a database to ---------------------------------------------------------------- 
function selectDb($pConnectDb) { 
    $dbSelect = mysql_select_db("School", $pConnectDb); 
    if(!$dbSelect) { 
     die("Database selection failed: " . mysql_error()); 
    } else { 
    echo "You are in the School database! <br/>"; 
    } 

} 

// function select --------------------------------------------------------------------- 
function selectById($pUInput) { 
    $sql = mysql_query("SELECT * FROM tblStudents 
         WHERE id='$pUInput[0]'"); 

     if (!mysql_query($sql)) 
      { 
      die('Error: ' . mysql_error()); 
      } 
     echo "Record Selected"; 

} 

// function insert ----------------------------------------------------------------------------- 
function insert($pUInput) { 

    $sql="INSERT INTO tblStudents (first_name, last_name, major, year) 
      VALUES 
     ('$pUInput[1]','$pUInput[2]','$pUInput[3]', '$pUInput[4]')"; 


     if (!mysql_query($sql)) 
      { 
      die('Error: ' . mysql_error()); 
      } 
     echo "1 record added"; 
} 



?> 

SQL Синтаксис:

CREATE TABLE `tblStudents` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `first_name` varchar(30) NOT NULL, 
    `last_name` varchar(50) NOT NULL, 
    `major` varchar(40) NOT NULL, 
    `year` date NOT NULL, 
    PRIMARY KEY (`id`) 
) 

ответ

2

Вы запускаете запрос в результате выполнения запроса. Это не будет работать. Вам нужно будет что-то использовать по строкам

$sql = mysql_query("SELECT * FROM tblStudents 
         WHERE id='" . $pUInput[0] . "'"); 

if (!$row = mysql_fetch_assoc($sql)) 

Что бы присвоить $ row значение массива, если запрос не сработал. Вы также можете также фильтровать pUinput с помощью mysql_real_escape_string, поскольку вам не обязательно знать, что он содержит (или статически отбрасывает его на целое число).

EDIT

Добавлен дополнительный бит информации.

+1

Благодарим вас за отзыв. (я новичок в PHP и SQL, я пытаюсь полностью понять ваш ответ.) Таким образом, оператор в функции selectById() фактически не будет выбирать запись одним только одним утверждением - ему нужна функция mysql_fetch_assoc (). Я просто подытоживаю то, что думаю, я понимаю ... – jc70

+2

Храните http://cwe.mitre.org/data/definitions/89.html в виду и посмотрите http://docs.php.net/mysql_real_escape_string , Или даже лучше использовать параметризованные запросы, см., Например, http://docs.php.net/pdo.prepared-statements – VolkerK

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