2014-07-07 96 views
-1

我試圖做一個非常基本的形式插入到我的數據庫。我經歷了無數個小時的工作。我覺得我理解每一行代碼。我無法想象問題是什麼。我沒有收到任何錯誤,雖然我還沒有在我的代碼中設置錯誤檢查。希望我的問題很簡單明顯。試圖將mysqli_query插入到我的數據庫中。沒有收到錯誤

這是我的connect.php文件。 $ con是我連接到一個新的mysqli。談話是我的數據庫。

<?php 
$con= new mysqli("localhost","root","","talk"); 

if (mysqli_connect_errno()) { 
echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 
?> 

這是我的html的相關表單部分。標題和內容以及我試圖插入數據庫的兩條信息。我包括connect.php。 textarea應該通過form =「talkform」鏈接到表單。這個表單使用action =「process.php」,我將在下面介紹。

<?php 
include 'connect.php'; 
?> 

<center> 
<h1>/talk/</h1> 

<form method="post" action="process.php" id="talkform"> 
    <input type="text" name="title"/><br><br> 
    <textarea form="talkform" rows="10" cols="80" name="content"></textarea><br> 
    <input type="submit" value="talk" /> 
</form> 

這裏是我的process.php。我也在這個文件中包含了connect.php。不知道這是多餘的,導致問題,但我不這麼認爲。我還使用了你看到的$ _SERVER ['REQUEST_METHOD']位,我從教程中找到了它。不知道是否有更好的方法來實現這一點。我把一切都變成了變量。當我通過錯誤工作時,它全部位於mysqli_query行。我有最強烈的懷疑是罪魁禍首。

<?php 

include 'connect.php'; 

if($_SERVER['REQUEST_METHOD'] = 'POST') 
{ 

$title = $_POST['title']; 
$content = $_POST['content']; 
$operation = "INSERT INTO 
       main(title, content) 
      VALUES($title, $content);"; 

$result = mysqli_query($con, $operation);  
} 
    ?> 

我希望我沒有留下任何東西。我一直在努力爭取一個數據庫工作一個星期。這是一個痛苦的過程,雖然我學到了很多,但我沒有得到任何工作。請幫忙,謝謝。

+0

將您的查詢改爲''INSERT INTO main(title,content)VALUES(''。$ title。''''。。$ content。''';'' –

+2

'if($ _ SERVER ['' REQUEST_METHOD'] ='POST')'給變量賦值「POST」,將其改爲使用比較== == –

+0

Think Different完全正確。上帝使我充滿喜樂。我確實花了很多時間擺弄這些引號和句號,但無法做到。有人可以解釋這些工作以及如何使用它們嗎? – Goose

回答

1

使用==符來比較

if($_SERVER['REQUEST_METHOD'] == 'POST') 

,並註明您的查詢變量

$operation = "INSERT INTO main(title, content) VALUES('$title', '$content');"; 

這樣的代碼看起來像逃避串

if($_SERVER['REQUEST_METHOD'] == 'POST') { 
    $title = mysqli_real_escape_string($_POST['title']); 
    $content = mysqli_real_escape_string($_POST['content']); 
    $operation = "INSERT INTO main(title, content) VALUES('$title', '$content');"; 
    $result = mysqli_query($con, $operation);  
} 

而且最好使用檢查後值是否存在或與empty()isset()

0

線4:if($_SERVER['REQUEST_METHOD'] == 'POST')

更好是直接檢查出是否形式使用if (isset($_POST['title']))發送。

當您致電mysqli_error()時,您會發現我們嘗試插入不帶引號的字符串(並且不要輸入字符串 - 查找SQl注入)。

$operation = "INSERT INTO main(title, content) VALUES('" . mysqli_real_escape_string($con, $title) . "', '" . mysqli_real_escape_string($con, $content) . "')"; 
0
  1. mysqli_query電話後你不檢查錯誤,當然你不會看到任何。
  2. 您很容易受到SQL注入攻擊。使用mysqli準備好的查詢語法來避免這種情況。見How can I prevent SQL injection in PHP?
  3. 你的直接問題是你的查詢讀取... VALUES(foobar, baz),這是無效的。你錯過了值的引號。但是,如果您正確使用準備好的語句,那將會成爲一個無關緊要的問題,所以請忽略它。
相關問題