2017-09-01 39 views
0

我在php/sql(以及一般所有語言)中都有點小菜鳥,我試圖獲得一個sql命令來運行一個html按鈕。運行SQL命令的HTML按鈕

,我試圖運行SQL命令是UPDATE supplies SET quantity = quantity + 1 WHERE Id=1

這是我的時刻:

dp.php

<?php 
$servername = "localhost"; 
$dbname = "tonor"; 
$username = "root"; 
$password = "password"; 

    try { 
     $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 
     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    } catch(PDOException $e) { 
     echo "Connection failed: " . $e->getMessage(); 
    } 
?> 

的index.php

<!DOCTYPE html> 
<html> 
    <head> 
    <?php 
     require_once 'db.php'; 

     if(isset($_POST['data'])){ 
      $sth = $conn->prepare("UPDATE supplies SET quantity = quantity + 1 WHERE Id=1"); 
      $sth->execute(); 
     } 
    ?> 
    <title>Homepage</title> 
    <link rel="stylesheet" type="text/css" href="style/main.css"> 
</head> 
<body> 
    <h1>testpage</h1> 
    <form method="POST" action="index.php"> 
     <input type="submit" name="data" value="1"/> 
    </form> 
+0

從代碼看來你不明白,PHP運行在服務器,而HTML在瀏覽處理,即先在服務器進程的PHP代碼,然後將結果發送到瀏覽器。製作類似您想要的東西的經典方法是通過POST兩步過程,搜索如何在PHP中處理POST請求。 –

回答

1

你應該嘗試一下,但你需要閱讀並進一步練習。

PDO手冊:http://php.net/manual/en/book.pdo.php

這是一個很大看看,只是看看他們的例子讓它是如何工作的想法。

閱讀並使其更容易:https://code.tutsplus.com/tutorials/why-you-should-be-using-phps-pdo-for-database-access--net-12059

PHP是一個服務器端語言。

無論如何,下面的內容應該足以讓你開始。

<?php 
    $servername = "localhost"; 
    $dbname = "databasename"; 
    $username = "username"; 
    $password = "password"; 

    try { 
     $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 
     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    } catch(PDOException $e) { 
     echo "Connection failed: " . $e->getMessage(); 
    } 

    return $conn; 
?> 


<!DOCTYPE html> 
<html> 
    <head> 
    <?php 
     require 'db.php'; 

     if(isset($_POST['data'])){ 
      $sth = $conn->prepare("UPDATE supplies SET quantity = quantity + 1 WHERE Id=1"); 
      $sth->execute(); 
     } 
    ?> 
    <title>Homepage</title> 
    <link rel="stylesheet" type="text/css" href="style/main.css"> 
</head> 
<body> 
    <h1>testpage</h1> 
    <form method="POST" action=""> 
     <input type="submit" name="data" value="1"/> 
    </form> 

</body> 
</html> 
+0

嗨約翰,感謝您的回覆,它工作得很好,除了每次我重新加載頁面它運行SQL查詢,我搜索它在谷歌和所有我似乎可以找到它是說我需要if( isset($ _ POST ['data'])){SQLQUERY HERE}你已經完成了,這只是我缺少的東西。我已經用我現在使用的代碼更新了原始文章。 – Jeff

+0

當你說重新加載時,你的意思是按下F5或在新標籤頁/窗口中打開頁面?因爲如果您發佈了數據,然後使用F5重新加載頁面,則瀏覽器可能會再次發佈數據(儘管通常會顯示有關該數據的警告) –

1

我回答約翰的帖子。

它每次重新加載頁面時執行的原因是因爲瀏覽器將發佈數據重新發送到服務器。你需要使用header()來重定向post。你的代碼不完美,但它的工作原理。你應該組織它。也許將所有數據庫邏輯放在一個類中。這個例子適用於重定向的例子。

<?php 
    if(isset($_POST['data'])) 
    { 
     require 'db.php'; 
     $sth = $conn->prepare("UPDATE supplies SET quantity = quantity + 1 WHERE Id=1"); 
     $sth->execute(); 
     header("Location: {$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']}"); 
     die("Posted, now redirecting"); 
    } 
?>