2013-11-20 25 views
-4

我正在嘗試將我的腳本從MySQL更新到MySQLI,但我遇到了一些問題。 問題是,每次我重新加載我的網站時,它都會在數據庫中添加一個新行,因爲這就是它的要求。 我的腳本是這樣的:防止php/mysqli腳本在我重新加載站點時運行

<?php 
$con=mysqli_connect("localhost","USERNAME","PASSWORD","test"); 
// Check connection 
if (mysqli_connect_errno()) 
{ 
echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

$sql="INSERT INTO test (name, content) 
VALUES 
('$_POST[name]','$_POST[content]')"; 

if (!mysqli_query($con,$sql)) 
{ 
die('Error: ' . mysqli_error($con)); 
} 
echo "1 record added"; 

mysqli_close($con); 
?> 
<html> 
<body> 

<form action="mysqli.php" method="post"> 
Name: <input type="text" name="name"> 
Content: <input type="text" name="content"> 
<input type="submit"> 
</form> 

</body> 
</html> 

感謝所有幫助:)

+5

爲什麼不檢查,看看您的POST變量設置,並且只運行SQL,如果它們是? – andrewsi

+0

究竟哪裏出了問題? –

+1

這個問題如何與mysql相關? –

回答

2

添加一個檢查你的POST數據。一個非常簡單的可能是:

if($_POST['name'] && $_POST['content']){ 
    $sql="INSERT INTO test (name, content) 
    VALUES 
    ('$_POST[name]','$_POST[content]')"; 

    if (!mysqli_query($con,$sql)) 
    { 
    die('Error: ' . mysqli_error($con)); 
    } 
    echo "1 record added"; 
} 

通過添加此檢查,查詢將僅在發送表單數據時執行。

+1

好的答案,但我認爲這個問題存在於這個問題中,他說他從MySQL轉移到了MySQLi,然後問題開始了 - 我不明白這是怎麼回事,當時他顯然缺乏一個簡單的檢查數據是否被張貼 – nrathaus

+0

謝謝!完美的作品! –

+2

@nrathaus,完全同意。我也認爲,經驗豐富的人並不總是使用stackoverflow;他們往往沒有足夠的經驗來充分解釋自己。所以,有時候,我認爲我們應該嘗試理解(或者甚至猜測)OP的想法。也許還給他們一個關於如何制定最好的下一個問題的反饋.. –

0

通常當我有我的表單和一個可執行的函數在同一個頁面時,我會執行andrewsi建議的操作,並檢查要使用isset()設置的變量,但我也在表單本身中包含一個隱藏字段,類似於

<input type="hidden" name="clicked" value="clicked" /> 

,並在網頁加載時我檢查這個變量:

if(isset($_POST["clicked"]) && $_POST["clicked"] == "clicked")) 
{...} 

它給了我的情況下,在頁面加載更多一點的控制有一個在表單字段一些揮之不去的價值等

0

在PHP代碼檢查添加一個檢查,當你張貼的價值

<input type="Submit" name="Add"> 

這時如果被點擊提交按鈕,然後輸入記錄

if(isset($_POST['Add'])) // checking if Submit button was clicked 
{ 
    $sql="INSERT INTO test (name, content) VALUES ('$_POST[name]','$_POST[content]')"; 
} 

if (!mysqli_query($con,$sql)) 
{ 
    die('Error: ' . mysqli_error($con)); 
} 
echo "1 record added"; 
} 
相關問題