2017-09-01 150 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"); 
    } 
?>