0

我正在使用 JQuery mobile,它在加载外部文件时遇到问题 - 始终显示“错误加载页面”消息。所以我不能在提交表单后使用 PHP 中的标题位置重定向到页面。

一旦按下提交按钮,您将如何在提交按钮下方显示已发送的消息?

这是 HTML:

<form method="post" id="update_beer" action="php/input_pint.php">
      <p><label for="name">Your name</label><input type="text" size="30" name="name" id="name" /></p>
      <p><label for="price">Price of a pint</label><input type="number" name="price" id="price" cols="5" /></p>
      <p><input type="submit" value="Update" name="commit" id="message_submit"/> or 
      <a class="close" href="/">Cancel</a></p>
</form>

这是将所有输入发送到我的数据库的 PHP:

<?php
//input price_pint.php
$con = mysql_connect("hostname", "databasename", "password");
if (!$con) {
die("Could not connect." . mysql_error());
}
mysql_select_db("databasename", $con);

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

if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}

mysql_close($con);
?>

我只是不知道如何将回声消息与我的表单相关联。

4

2 回答 2

3

您可以使用 ajax,还需要 sql 转义您的输入,否则像Foster's Sam Smith'sect 这样的饮料会破坏您的查询。

<script>
$("#update_beer").submit(function(e){
    $.ajax({
        type: "POST",
        url: "php/input_pint.php",
        data: $("#update_beer").serialize(),
        success: function(data){
            if(data=='true'){
                alert('Beer Added');
            }
        }
    });
    e.preventDefault();
});
</script>

还有一种使用 PDO 连接和插入数据库的更好方法:

<?php
try {
    $db = new PDO("mysql:host=127.0.0.1;dbname=databasename", 'dbuser', 'dbpassword');
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
}catch (Exception $e){
    die('Cannot connect to mySQL server.');
}

if($_SERVER['REQUEST_METHOD']=='POST'){
    if(!empty($_POST['name']) && !empty($_POST['price'])){
        $sql = 'INSERT into price_pints (`name`,`price`) VALUES (:name,:price)';
        $query = $db->prepare($sql);
        $query->bindParam(':name', $_POST['name'], PDO::PARAM_STR);
        $query->bindParam(':price', $_POST['price'], PDO::PARAM_STR);
        $query->execute();
        die('true');
    }
}
die('false');
?>
于 2013-02-15T13:33:57.563 回答
1

创建一个函数,将其插入数据库并返回一个标志,如果成功则返回 true,如果出现问题则返回 falseg.then 根据标志回显您的消息。

于 2013-02-15T13:34:42.870 回答