2016-10-26 18 views
-1

好吧,看到截圖的問題,這裏有我的代碼,因爲你們中有些人需要「測試代碼」。Mysql PDO - 聲明數據庫常量

我正在使用mysql和PDO對象進行項目工作。一切都按預期工作,直到我開始使用reports.php,我需要使用functions.php中的兩個函數,問題是,它顯示錯誤,因爲我的數據庫常量已經定義。我知道這是因爲我在每個需要它的函數中都包含一個名爲db_connection.php的外部連接文件。我試圖改變包含在每個函數include_once,或require_once,但然後,它顯示錯誤說$ conn變量(這是我的連接被稱爲)沒有定義,並執行() ,數據庫語句的prepare(),query()方法也未定義。

我也嘗試將db_connection.php文件中的代碼包含到一個函數中,將它放在我的functions.php的開頭,並將它分配給我的$ conn變量,剛創建的函數。

有誰知道我怎麼能聲明我的數據庫連接使用PDO沒有宣佈它兩次?

謝謝你,我希望,該代碼使得一切更加清晰....因爲它沒有爲我做的....

CSS

.required { 
    &:after { 
     content: " *"; 
     color: red; 
    } 
} 
.addLink { 
    color: #645180; 
    margin-bottom: 10px; 
    display: block; 
} 
.submit { 
    border: 0; 
    background-color: #645180; 
    color: white; 
    width:100%; 
    margin: 15px 0; 
    padding:5px; 
} 
#content { 
    padding: 3% 0; 

    h1 { 
     text-align:center; 
    } 
} 

ul.projectList, 
ul.taskList { 
    list-style: none; 
    border: .5em solid white; 
    padding:15px 0; 
    li { 
    background-color: white; 
    border-bottom: 1px solid #b2b2b2; 
    padding: 5 15px; 

    &:last-child { 
     border-bottom: 0; 
    } 
    } 
} 
table { 
    width: 40%; 
    margin:0 auto; 
    td { 
     padding: .2rem .2rem; 
    } 
} 
thead > tr> td { 
    font-weight: bold; 
    background-color: #cebece; 
} 
.totalReportTime > th { 
    background-color: #632c62; 
    color: white; 
} 

db_connection.php

<?php 
    define('DB_SERVER', "localhost"); 
    define('DB_USER', "tracker_userr"); 
    define('DB_PASSWORD', "tracker_passs"); 
    define('DB_DATABASE', "tracker"); 
    define('DB_DRIVER', "mysql"); 
?> 

的functions.php

<?php 
function connect_to_db() { 
    define('DB_SERVER', "localhost"); 
    define('DB_USER', "tracker_user"); 
    define('DB_PASSWORD', "tracker_pass"); 
    define('DB_DATABASE', "tracker"); 
    define('DB_DRIVER', "mysql"); 

try { 
     $conn = new PDO(DB_DRIVER . ":dbname=" . DB_DATABASE . ";host=" . DB_SERVER, DB_USER, DB_PASSWORD); 
     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     //echo "Connected successfully"; 
} catch(PDOException $e) { 
     echo "Connection failed: " . $e->getMessage(); 
    } 
    return $conn; 
} 
function get_projects_list() { 
    // include 'db_connection.php'; 
    $conn = connect_to_db(); 
    try { 
    return $conn->query("SELECT * FROM projects"); 
    } catch (PDOException $e) { 
     echo 'Error:' . $e->getMessage() . "<br />"; 
     return array(); 
    } 
} 

function get_tasks_list($filter = null) { 
    // include 'db_connection.php'; 
    $conn = connect_to_db(); 
    $sql = 'SELECT tasks.*, projects.title as project FROM tasks' 
     . ' JOIN projects ON tasks.project_id = projects.project_id'; 

    $orderBy = ' ORDER BY date DESC'; 

    if ($filter) { 
     $orderBy = ' ORDER BY projects.title ASC, date DESC'; 
    } 
    try { 
     $results = $conn->prepare($sql . $orderBy); 
     $results->execute(); 
    } catch (PDOException $e) { 
     echo 'Error:' . $e->getMessage() . "<br />"; 
     return array(); 
    } 
    return $results->fetchAll(PDO::FETCH_ASSOC); 
} 

function add_project($title, $category) { 
    // include 'db_connection.php'; 
    $conn = connect_to_db(); 
    try { 
     $sql = "INSERT INTO projects(title, category) VALUES (:title, :category)"; 

     $results = $conn->prepare($sql); 
     $results->bindParam(':title', $title, PDO::PARAM_STR, 100); 
     $results->bindParam(':category', $category, PDO::PARAM_STR, 100); 


    if($results->execute()) { 
     echo '1 row has been inserted'; 
    } 

    $conn = null; 

    } catch(PDOException $e) { 
     echo 'Error: ' . $e->getMessage() . '<br />'; 
     return false; 
    } 
    return true; 
} 

function add_task($title, $date, $time, $project_id) { 
    // include 'db_connection.php'; 
    $conn = connect_to_db(); 
    try { 
     $sql = "INSERT INTO tasks(title, date, time, project_id) VALUES (:title, :date, :time, :project_id)"; 

     $results = $conn->prepare($sql); 
     $results->bindParam(':title', $title, PDO::PARAM_STR, 100); 
     $results->bindParam(':date', $date, PDO::PARAM_STR, 100); 
     $results->bindParam(':time', $time, PDO::PARAM_STR, 100); 
     $results->bindParam(':project_id', $project_id, PDO::PARAM_INT); 


    if($results->execute()) { 
     echo '1 row has been inserted'; 
    } 

    $conn = null; 

    } catch(PDOException $e) { 
     echo 'Error: ' . $e->getMessage() . '<br />'; 
     return false; 
    } 
    return true; 
} 


try { 
     $conn = new PDO(DB_DRIVER . ":dbname=" . DB_DATABASE . ";host=" . DB_SERVER, DB_USER, DB_PASSWORD); 
     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     //echo "Connected successfully"; 
} catch(PDOException $e) { 
     echo "Connection failed: " . $e->getMessage(); 
    } 

project_list.php

<?php 
$pageTitle = "Project | Time Tracker"; 
$page = 'projects'; 

include('includes/functions.php'); 
include 'includes/header.php'; ?> 

    <div class="col-container"> 
     <h1>Project List</h1> 
     <a class="addLink" href="project.php">Add project</a> 
     <ul class="projectList"> 
     <?php 
     foreach (get_projects_list() as $item) { 
      echo '<li>' . $item['title'] . '</li>'; 
     } 
     ?> 
     </ul> 
    </div> 

<?php include 'includes/footer.php'; 

的header.php

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
    <title><?php echo $pageTitle; ?></title> 
    <meta charset="UTF-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=Edge"> 
    <meta name="description" content="project list"> 
    <meta name="keywords" content=""> 
    <meta name="author" content="Evelia Molina"> 
    <meta name="viewport" content="width=device-width, initial-scale=1">  
    <link href='https://fonts.googleapis.com/css?family=Roboto+Slab:400,700' rel='stylesheet' type='text/css'> 
    <link rel="stylesheet" href="css/pre_style.css" type="text/css"> 
    <link href="css/style.css" rel="stylesheet" type="text/css"/> 
    </head> 
    <body> 

    <svg style="display: none;"> 
    <defs> 
     <svg id="logo_icon" viewBox="0 0 64 64" preserveAspectRatio="xMinYMin meet"> 
     <rect x="19.5" y="41.4" transform="matrix(0.7071 -0.7071 0.7071 0.7071 -24.2442 27.4475)" width="3" height="3.3"/> 
     <rect x="19.4" y="19.5" transform="matrix(0.7071 -0.7071 0.7071 0.7071 -8.7041 21.0111)" width="3.3" height="3"/> 
     <rect x="15" y="30.4" width="3" height="3.3"/> 
     <rect x="30.4" y="46.1" width="3.3" height="3"/> 
     <path d="M32,0C14.3,0,0,14.3,0,32c0,17.7,14.3,32,32,32s32-14.3,32-32C64,14.3,49.7,0,32,0z M32,55.6C19,55.6,8.4,45,8.4,32 
      C8.4,19,19,8.4,32,8.4S55.6,19,55.6,32C55.6,45,45,55.6,32,55.6z"/> 
     <path d="M48.9,30.4c0-0.2,0-0.4-0.1-0.6c0-0.2-0.1-0.4-0.1-0.6c-0.1-0.3-0.1-0.7-0.2-1c0-0.1-0.1-0.2-0.1-0.3 
      c-0.4-1.6-1-3.2-1.9-4.6c-0.2-0.4-0.5-0.7-0.7-1.1c0,0-0.1-0.1-0.1-0.1c-0.3-0.4-0.6-0.8-1-1.2c0,0,0,0,0,0c0,0-0.1-0.1-0.1-0.1 
      c-0.4-0.4-0.8-0.8-1.2-1.2c-0.1-0.1-0.3-0.3-0.5-0.4c-0.3-0.3-0.6-0.5-0.9-0.7c-0.2-0.2-0.4-0.3-0.7-0.5c-0.3-0.2-0.5-0.3-0.8-0.5 
      c-0.3-0.2-0.5-0.3-0.8-0.5c-0.1-0.1-0.2-0.1-0.3-0.2c-0.1-0.1-0.3-0.1-0.4-0.2c-0.2-0.1-0.4-0.2-0.6-0.3c0,0,0,0,0,0 
      C36.4,15.4,34.2,15,32,15c0,7,0,11.1,0,13.5c-0.6,0-1.2,0.2-1.8,0.5c0,0-0.1,0-0.1,0c-0.1,0.1-0.2,0.1-0.2,0.2 
      c-0.1,0-0.1,0.1-0.2,0.1c0,0,0,0-0.1,0c0,0,0,0,0,0c-0.3,0.3-0.6,0.7-0.8,1.1c-0.9,1.8-0.1,3.9,1.6,4.7c1.1,0.5,2.3,0.5,3.3-0.1 
      c0,0,0.1,0,0.1,0c0.1-0.1,0.2-0.1,0.2-0.2c0.1,0,0.1-0.1,0.2-0.1c0,0,0,0,0.1,0c0,0,0,0,0,0l0,0c0,0,0,0,0,0 
      c3.8,4.3,7.2,8.2,8.9,10.1c1.7-1.5,3.1-3.3,4-5.2c0,0,0,0,0,0c0,0,0,0,0,0c0.2-0.5,0.4-0.9,0.6-1.4c0-0.1,0-0.1,0.1-0.2 
      c0.1-0.4,0.3-0.8,0.4-1.2c0.5-1.7,0.7-3.3,0.7-5c0-0.1,0-0.2,0-0.3C49,31.1,49,30.7,48.9,30.4z"/> 
     </svg> 
     <svg id="task_icon" viewBox="0 0 64 64" preserveAspectRatio="xMinYMin meet"> 
     <path d="M64,53.3l-10,9.6c-0.7,0.7-1.8,1.1-2.5,1.1l0,0l0,0c-1.1,0-1.8-0.4-2.5-1.1l-10-9.6l0,0l0,0l0,0l0,0V3.6c0-2.1,1.4-3.6,3.6-3.6h17.8C62.6,0,64,1.4,64,3.6V53.3L64,53.3L64,53.3z M56.9,7.1H46.2v7.1h10.7V7.1z M56.9,49.1V17.8H46.2v31.3l5.3,4.3l0,0L56.9,49.1z M21.3,64H3.6C1.4,64,0,62.6,0,60.4V3.6C0,1.4,1.4,0,3.6,0h17.8c2.1,0,3.6,1.4,3.6,3.6v56.9C24.9,62.6,23.5,64,21.3,64z M17.8,7.1H7.1v7.1h5.3c1.1,0,1.8,0.7,1.8,1.8s-0.7,1.8-1.8,1.8H7.1v7.1h1.8c1.1,0,1.8,0.7,1.8,1.8s-0.7,1.8-1.8,1.8H7.1v7.1h5.3c1.1,0,1.8,0.7,1.8,1.8c0,1.1-0.7,1.8-1.8,1.8H7.1v7.1h1.8c1.1,0,1.8,0.7,1.8,1.8s-0.7,1.8-1.8,1.8H7.1v7.1h10.7V7.1z"/> 
     </svg> 
     <svg id="project_icon" viewBox="0 0 64 64" preserveAspectRatio="xMinYMin meet"> 
     <path d="M60.4,64H3.6C1.4,64,0,62.6,0,60.4V3.6C0,1.4,1.4,0,3.6,0h24.9c1.4,0,2.5,0.7,3.2,2.1l5.7,12.1h23.1c2.1,0,3.6,1.4,3.6,3.6v42.7C64,62.6,62.6,64,60.4,64z M7.1,56.9h49.8V21.3h-22c-1.4,0-2.5-0.7-3.2-2.1L26.3,7.1H7.1V56.9z"/> 
     <path d="M60.4,7.1h-16c-2.1,0-3.6-1.4-3.6-3.6S42.3,0,44.4,0h16C62.6,0,64,1.4,64,3.6S62.6,7.1,60.4,7.1z"/> 
     </svg> 
     <svg id="report_icon" viewBox="0 0 64 64" preserveAspectRatio="xMinYMin meet"> 
     <path d="M60.4,0H3.6C1.4,0,0,1.4,0,3.6v56.9C0,62.6,1.4,64,3.6,64h56.9c2.1,0,3.6-1.4,3.6-3.6V3.6C64,1.4,62.6,0,60.4,0zM56.9,56.9H7.1V7.1h49.8V56.9z"/> 
     <path d="M16.5,21.3h30.9c2.1,0,3.6-1.4,3.6-3.6c0-2.1-1.4-3.6-3.6-3.6H16.5c-2.1,0-3.6,1.4-3.6,3.6C13,19.9,14.4,21.3,16.5,21.3z" /> 
     <path d="M16.5,35.6h30.9c2.1,0,3.6-1.4,3.6-3.6s-1.4-3.6-3.6-3.6H16.5c-2.1,0-3.6,1.4-3.6,3.6S14.4,35.6,16.5,35.6z"/> 
     <path d="M16.5,49.8h30.9c2.1,0,3.6-1.4,3.6-3.6s-1.4-3.6-3.6-3.6H16.5c-2.1,0-3.6,1.4-3.6,3.6S14.4,49.8,16.5,49.8z"/> 
     </svg> 
    </defs> 
    </svg> 

    <header class="header"> 
    <div class="col-container"> 
     <h1> 
     <a class="logo" href="./"> 
      <svg viewbox="0 0 64 64" class="logo-icon"><use xlink:href="#logo_icon"></use></svg> 
      <span class="logo-name">Time Tracker</span> 
     </a> 
     </h1> 

     <ul class="nav"> 
     <li class="nav-item tasks<?php if ($page == "tasks") { echo " on"; } ?>"><a class="nav-link" href="task_list.php">Tasks</a></li> 
     <li class="nav-item projects<?php if ($page == "projects") { echo " on"; } ?>"><a class="nav-link" href="project_list.php">Projects</a></li> 
     <li class="nav-item reports<?php if ($page == "reports") { echo " on"; } ?>"><a class="nav-link" href="reports.php">Reports</a></li> 
     </ul> 
    </div> 
    </header> 
    <div id="content"> 

footer.php

</div><!-- end content --> 

    <footer class="footer"> 
    <div class="col-container"> 
     <svg viewbox="0 0 64 64" class="logo-icon"><use xlink:href="#logo_icon"></use></svg> 
     <p class="footer-copy">&copy; <?php echo date("Y"); ?> Time Tracker by Eve</p> 
    </div> 
    </footer> 

</body> 
</html> 

project.php

<?php require 'includes/functions.php'; 
$pageTitle = "Project | Time Tracker"; 
$page = 'projects'; 


if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    $title = filter_input(INPUT_POST, 'title', FILTER_SANITIZE_STRING); 
    $category = filter_input(INPUT_POST, 'category', FILTER_SANITIZE_STRING); 

    if(empty($title) || empty($category)) { 
     $error_message = "Title and category can not be empty"; 
    } else { 
     if(add_project($title, $category)) { 
     header('Location: project_list.php'); 
     exit; 
     } else { 
      $error_message = "Could not add project"; 
     } 
    } 
} 
include 'includes/header.php';?> 
    <div class="col-container"> 
     <h1>Add project</h1> 
     <?php 
     if (isset($error_message)) { 
      echo '<p class="message">' . $error_message . '</p>'; 
     } 
     ?> 
     <form method="POST" action="project.php"> 
     <div> 
      <label for="title" class="required">Title</label> 
      <input name="title" id="title" type="text" value="" /> 
     </div> 
     <div> 
      <label for="category" class="required">Category</label> 
      <select id="category" name="category"> 
      <option value="">Select one</option> 
      <option value="Charity">charity</option> 
      <option value="Science">science</option> 
      <option value="Art">art</option> 
      </select> 
     </div> 
     <button class="submit" type="submit" name="submit">Submit</button> 
     </form> 
    </div> 

<?php include 'includes/footer.php'; 

task.php

<?php require 'includes/functions.php'; 

$pageTitle = "Task | Time Tracker"; 
$page = 'tasks'; 
$project_id = $title = $date = $time = ''; 


if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    $project_id = filter_input(INPUT_POST, 'project_id', FILTER_SANITIZE_NUMBER_INT); 
    $title = filter_input(INPUT_POST, 'title', FILTER_SANITIZE_STRING); 
    $date = filter_input(INPUT_POST, 'date', FILTER_SANITIZE_STRING); 
    $time = filter_input(INPUT_POST, 'time', FILTER_SANITIZE_STRING); 

    $dateMatch = explode('/', $date); 

    if(empty($project_id) || empty($title) || empty($date) || empty($time)) { 
     $error_message = "Required fields can not be empty"; 
    } elseif (count($dateMatch) != 3 
     || strlen($dateMatch[0]) != 2 
     || strlen($dateMatch[1]) != 2 
     || strlen($dateMatch[2]) != 4 
     || !checkdate($dateMatch[1], $dateMatch[0], $dateMatch[2]) 
     ) { 
     $error_message = "Please, introduce a valid date format"; 
    } else { 
     if(add_task($title, $date, $time, $project_id)) { 
     header('Location: task_list.php'); 
     exit; 
     } else { 
      $error_message = "Could not add task"; 
     } 
    } 
} 
include 'includes/header.php';?> 
    <div class="col-container"> 
     <h1>Add task</h1> 
     <?php 
     if (isset($error_message)) { 
      echo '<p class="message">' . $error_message . '</p>'; 
     } 
     ?> 
     <form method="POST" action="task.php"> 
      <div> 
      <label for="project_id" class="required">Project</label> 
      <select name="project_id"> 
      <option value="">Select one</option> 
      <?php foreach (get_projects_list() as $item) { 
       echo '<option value="' . $item['project_id'] . '"'; 
       if ($project_id == $item['project_id']) { 
        echo 'selected'; 
       } 
       echo '>' . $item['title'] . "</option>"; 
      } ?> 
      </select> 
     </div> 
     <div> 
      <label for="title" class="required">Title</label> 
      <input name="title" type="text" value="<?php echo htmlspecialchars($title); ?>" /> 
     </div> 
     <div> 
      <label for="date" class="required">Date</label> 
      <input name="date" type="text" value="<?php echo htmlspecialchars($date); ?>" /> 
     </div> 
      <div> 
      <label for="time" class="required">Time</label> 
      <input name="time" type="text" value="<?php echo htmlspecialchars($time); ?>" /> 
     </div> 
     <button class="submit" type="submit" name="submit">Submit</button> 
     </form> 
    </div> 

<?php include 'includes/footer.php'; 

task_list.php

<?php 
    $pageTitle = "Task | Time Tracker"; 
    $page = 'taks'; 

    include('includes/functions.php'); 
    include 'includes/header.php'; ?> 

     <div class="col-container"> 
      <h1>Task List</h1> 
      <a class="addLink" href="task.php">Add task</a> 
      <ul class="taskList"> 
      <?php 
      foreach (get_tasks_list() as $item) { 
       echo '<li>' . $item['title'] .' - In project: ' . $item['project'] . '</li>'; 
      } 
      ?> 
      </ul> 
     </div> 

    <?php include 'includes/footer.php'; 

reports.php

<?php require_once 'includes/functions.php'; 

$pageTitle = "Reports | Time Tracker"; 
$page = 'reports'; 
$filter = 'all'; 

include 'includes/header.php';?> 
    <div class="col-container"> 
     <h1>Reports</h1> 
     <form method="GET" action="reports.php"> 
     <label for="filter-by-project">Filter:</label> 
     <select name="filter-by-project"> 
      <option value="">Select a project</option> 
      <?php 
      foreach(get_projects_list() as $item) { 
       echo '<option value="' . $item['project_id'] . '">' . $item['title'] . '</option>'; 
      } 
      ?> 
     </select> 
     <input class="button" type="submit" value="Run" /> 
     </form> 
     <table> 
      <?php 
     $total = $project_id = $project_total = 0; 
     $tasks = get_tasks_list($filter); 
     foreach ($tasks as $item) { 
      if ($project_id != $item['project_id']) { 

       $project_id = $item['project_id']; 
       echo '<thead>'; 
       echo '<tr>'; 
       echo '<td>' . $item['project'] . '</td>'; 
       echo '<td> Date </td>'; 
       echo '<td> Time </td>'; 
       echo '</tr></thead>'; 
      } 

      $project_total += $item['time']; 
      $total += $item['time']; 
      echo '<tr>'; 
      echo '<td>' . $item['title'] . '</td>'; 
      echo '<td>' . $item['date'] . '</td>'; 
      echo '<td>' . $item['time'] . '</td>'; 
      echo '</tr>'; 

      if (next($tasks)['project_id'] != $item['project_id']) { 
       echo '<tr>'; 
       echo '<th colspan="2">Project Total</th>'; 
       echo '<th>' . $project_total . '</th>'; 
       echo '</tr>'; 
       $project_total = 0; 
      } 
     } 
     ?> 
     <tr class="totalReportTime"> 
      <th colspan="2">Total</th> 
      <th><?php echo $total; ?></th> 
     </tr> 
     </table> 
    </div> 

<?php include 'includes/footer.php'; 

的錯誤,如果我包括每一個功能或相同的錯誤db_connection.php文件,如果我創建一個連接的功能:

Notice: Constant DB_SERVER already defined in /html/my_tracker/includes/functions.php on line 3 

    Notice: Constant DB_USER already defined in /html/my_tracker/includes/functions.php on line 4 

    Notice: Constant DB_PASSWORD already defined in /html/my_tracker/includes/functions.php on line 5 

Notice: Constant DB_DATABASE already defined in /html/my_tracker/includes/functions.php on line 6 

Notice: Constant DB_DRIVER already defined in /html/my_tracker/includes/functions.php on line 7 

錯誤,如果我require_once或include_once:

Notice: Undefined variable: conn in /html/my_tracker/includes/functions.php on line 44 

Fatal error: Call to a member function prepare() on a non-object in /html/my_tracker/includes/functions.php on line 44 

Fatal error: Call to a member function query() on a non-object in /html/my_tracker/includes/functions.php on line 52 

Fatal error: Call to a member function execute() on a non-object in /html/my_tracker/includes/functions.php on line 66 
+0

'require'includes/functions.php';' - 你是否也將它們改爲'require_once'?和所有'include'到'include_once'?他們仍然是你的代碼的一部分。 –

+0

牆碼警示!!!! –

+1

是的Fred-ii-我做到了。我不能發佈每一步我都可以......我可以嗎? Jay Blanchard,在我的另一篇文章中,你(包括你)說我需要把代碼理解出來,你需要所有的文件,對吧?這就是我以前的意思,有時候一個圖像超過1000字就是值得的,你難道不這樣說嗎? 我只是不知道如何提出問題.....所以請告訴我,我應該把什麼代碼呢? –

回答

2

好的...代碼是可怕的(很抱歉說,但它是。數據庫登錄和信息不應該在常量中定義)。但是,這很容易解決。而是重新定義的,和/或重新包括無處不在,只是這樣做,你必須定義的常量:

if (!defined('DB_SERVER')) { 
    define('DB_SERVER', "localhost"); 
} 
if (!defined('DB_USER')) { 
    define('DB_USER', "tracker_user"); 
} 
if (!defined('DB_PASSWORD')) { 
    define('DB_PASSWORD', "tracker_pass"); 
} 
if (!defined('DB_DATABASE')) { 
    define('DB_DATABASE', "tracker"); 
} 
if (!defined('DB_DRIVER')) { 
    define('DB_DRIVER', "mysql"); 
} 

這應該可以解決惱人的「已定義」的消息,而無需重寫整個代碼 - 你應該做。

PDO應該用在OOP狀態中,而不是過程中,定義一個$ db-class通常會防止所有這些問題。而且,將重要信息放入定義的常量中是一個重大的安全問題,應該避免。你應該有一些你定義所有這些變量的配置文件,並將其加載到需要它們的類中。但是,這意味着需要完全重新設計相當多的代碼。

+0

我正在關注teamtreehouse的教程....他們這樣做:s 謝謝,我會檢查,並嘗試:)爲什麼我必須先檢查它是否未定義?我的意思是,在我使用的文件中,只有一個函數不會發生,所以我理解,如果我調用兩個函數,即使它們有「如果未定義」,它們也會包含在每個函數中功能,不是嗎? –

+0

它確實工作!!!!!!!!!!!!!謝謝!!!!!!!!!!!!!!!!!!!!!我知道我很煩人,但你能用基本的語言解釋爲什麼我需要檢查它是否已被定義,如果無論如何我將文件包含在每個函數中? 謝謝謝謝謝謝你!這讓我瘋狂......而且所有這些與屏幕截圖混爲一談! –

+1

它被稱爲「比對不起更安全」 - 關鍵在於,如果它已經被定義,則不需要嘗試重新定義它們,因爲它們已經被定義並且可用。既然你正在做這個多個地方,這將防止雙重定義常量的麻煩。我還會將整個'connect_to_db'-函數移到db_connection.php文件中,並將該文件包含在每個函數中(仍然使用我在上面給出的單個文件中的代碼)。這樣,你不應該在其他地方聲明這些常量。 – junkfoodjunkie