2010-06-15 41 views
1

的index.phpMySQL的PHP​​的問題:儘管使用error_reporting(E_ALL)線

<html> 
    <head> 
    <title>Josh's Online Playground</title> 
    </head> 
    <body> 

    <form method="POST" action="action.php"> 
     <table> 
     <tr> 
     <td>"data for stuff"</td> 
     <td><input type="text" ?></td> 
    </tr> 

     <tr> 
      <td><input type="submit"></td> 
     </tr> 
     </table> 
    </form> 

    </body> 
</html> 

action.php的

<?php 
    error_reporting(E_ALL); 
    ini_sit("display_errors", 1); 

    $mysqli = new mysqli('localhost', 'root', 'password', 'website'); 

    $result = $mysqli->query("insert into stuff (data) values (' 
     .$_POST['data'] 
     ."'); 

    echo $mysqli->error(); 

    if($result = $mysqli->query("select data from stuff")){ 
    echo 'There are '.$result->num_rows.' results.'; 
    } 

    while ($row = $result->fetch_object()){ 
    echo 'stuff' . $row->data; 
    } 
?> 

儘管action.php的前兩行沒有錯誤消息,我沒有得到任何錯誤或警告消息。 相反,點擊提交按鈕後,我會看到一個空白頁面。

我是否必須以不同的方式插入數據?

回答

0

您在代碼的某處(在請求結束時)反轉了單引號和雙引號。確保display_error php設置爲

1

您有一個致命錯誤,所以腳本根本無法運行,因此無法報告任何錯誤。 看這句話:

$result = $mysqli->query("insert into stuff (data) values (' 
     .$_POST['data'] 
     ."'); 

應改爲:

$result = $mysqli->query("insert into stuff (data) values ('".$_POST['data']."')"); 

而且在SQL語句

+0

我修正了這個問題。但仍然沒有結果。該行現在讀取: $ result = $ mysqli-> query(「insert into stuff(data)values('」。$ _POST ['data']。「')」; – lowerkey 2010-06-15 11:00:16

+0

養成了使用編輯器的習慣語法突出顯示,並且查看諸如此類的錯誤變得更加容易......如果您查看原始發佈內容,即使在那裏也很明顯。 – 2010-06-15 11:05:17

3

你有一個語法錯誤使用它之前逃脫你的$ _ POST [ '數據']值在action.php的:

的ini_setini_sit在第2行!

1
ini_sit 

必須

ini_set 

;)

0

好吧,首先,你在那裏有一個巨大的SQL注入漏洞。其次,你沒有錯誤檢查。三,你的報價是不正確的嵌套(這將導致致命的錯誤,這就是爲什麼你沒有看到任何東西)

修改它是這樣的:

$mysqli = new mysqli('localhost', 'root', 'password', 'website'); 
if ($mysqli->connecterror) { 
    //There was an error connecting, handle it 
} 

$result = $mysqli->query("insert into stuff (data) values ". 
    " ('".$mysqli->real_escape_string($_POST['data'])."')"; 

if ($result === false) { 
    //Query error, handle it 
} 

此外,你通過循環數據不檢查結果是否有效:

if($result = $mysqli->query("select data from stuff")){ 
    echo 'There are '.$result->num_rows.' results.'; 
    while ($row = $result->fetch_object()){ 
     echo 'stuff' . $row->data; 
    } 
}