2013-05-02 58 views
-1

我知道這個問題可能很簡單,但由於我是PHP和MySQL的新手,我不知道這個解決方案。 我想從表中檢索數據,但僅限於那個用戶。這是一個檢查設備是否固定的系統,我只想讓客戶看到他自己的設備,而不是其他設備。所以我認爲這是通過比較每個表中的id以及是否等於show來完成的。 你有什麼線索可以做到嗎?這是我的代碼至今:通過ID從數據庫中選擇數據

<?php 
// A sessão precisa ser iniciada em cada página diferente 
if (!isset($_SESSION)) session_start(); 
?> 
<head> 
    <link href="css/style.css" rel="stylesheet" type="text/css" /> 
    <link href="favicon.ico" rel="shortcut icon"> 
<title>Verificar estado</title></head> 
<body> 
<?php 
    //Tentativa de estabelecer uma ligação à BD 
    $connection = new mysqli('****', '****', '******', '****'); 

    //Verificar se a ligação foi estabelecida com sucesso 
    if (mysqli_connect_errno()) { 
     echo "</h2>Erro no acesso à base de dados.</h2>" . mysqli_connect_error(); 
     exit(); 
     } 
    $user = $_SESSION['id']; 
    $sql = "SELECT id_user, id_ficha, avaria FROM fichas"; 

    //Executar a Query! 
    $result = $connection->query($sql); 
    echo "<div id='listanomes'>User ID - ID Ficha - Avaria</div>"; 
    ?> 
    <div id="lista"> 
    <div class="consultar"> 
    <?php 
    while ($userproduto = $result-> fetch_object()) { 
     echo '<table border="1">'; 
     echo "<tr>"; 
      echo "<td>" . $userproduto->id_user . "</td>"; 
      echo "<td>" . $userproduto->id_ficha . "</td>"; 
      echo "<td>" . $userproduto->avaria . "</td>"; 
      echo "</tr>"; 
     echo "</table>"; 
    } 
     echo '</div>'; 
     echo '</div>'; 
    //Termina o script 

     echo '<div class="foot">'; 
     echo '<p>Copyright © 2013 - Todos os direitos reservados - <a href="mailto:[email protected]">Númica</a></p>'; 
     echo '</div>'; 
     echo '</body>'; 
     echo '</html>'; 
exit(); 
    ?> 
+0

'SELECT FIELDS FROM TABLE WHERE UR_KEY_NAME = USER_ID'; – Red 2013-05-02 10:21:58

回答

1

改變這種

if (!isset($_SESSION)) session_start(); 

session_start(); 
if (isset($_SESSION['id'])) 

,並使用該查詢與WHERE

$user = $_SESSION['id']; 
$sql = "SELECT id_user, id_ficha, avaria FROM fichas WHERE id_user = $user"; 
+0

你好,我聽說我們不應該使用直接會話來查詢我也遵循它,但爲什麼我應該不使用會話直接查詢它讓我感到困惑。你可以澄清 – 2013-05-02 10:26:45

+0

現在有一個while循環的問題。致命錯誤:調用成員函數mysql_fetch_object()在非對象 – 2013-05-02 10:28:10

+0

@JoãoPereira它意味着這個查詢失敗。回顯此查詢並在'phpmyadmin'中運行它。 – 2013-05-02 10:29:40

1

你缺少WHERE您的查詢中的子句

$user = $_SESSION['id']; 
$sql = "SELECT id_user, id_ficha, avaria FROM fichas WHERE id_user = $user"; 
+0

致命錯誤:在非對象 – 2013-05-02 10:27:50

+0

上調用成員函數mysql_fetch_object(),這意味着沒有找到您的記錄。在進行之前做一些調節。 – 2013-05-02 10:35:32

+0

好吧,已編輯查詢,並在phpmyadmin是工作,但在PHP它不會給我錯誤 – 2013-05-02 10:51:55

0

如果我理解正確的話和fichas表用戶和設備之間的關聯表,則您的查詢應該看起來像

$sql = "SELECT id_user, id_ficha, avaria FROM fichas f 
     LEFT JOIN equipment_table eq ON eq.id_ficha = f.id_ficha 
     WHERE id_user = " . $id."; 

這個查詢將返回所有的設備給用戶,並且您也將獲得設備表中的值。

不要忘記對值進行乾燥處理(避免SQL injection) - 例如將其解析爲數字。

+0

變量$ id是相同的我的變量$用戶權限?我在獲取函數時出現錯誤:S – 2013-05-02 10:31:58

+0

是的,'$ id'是'$ user',你得到了什麼錯誤?查詢必須修改,我想你的數據庫中沒有'equipment_table'。有關多對多關聯的更多信息,請參閱http://www.tomjewett.com/dbdesign/dbdesign.php?page=manymany.php。 – 2013-05-02 11:30:49

+0

已經解決了這個問題,我重新分配了_SESSION ['id'],就像我在索引頁中的那樣,它正在工作,名稱是錯誤的,謝謝! – 2013-05-02 13:27:48