Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP表单更新MySQL_Php_Mysql_Forms - Fatal编程技术网

使用PHP表单更新MySQL

使用PHP表单更新MySQL,php,mysql,forms,Php,Mysql,Forms,我有一个PHP表单update-complaint.PHP,它有20个字段Q1、Q2-Q20,并显示了当前记录的数据——从这里开始,所有这些都运行良好。在提交时,它会转到updated-complaint.php,数据库中的字段应该更新。如果成功,它会说这样或错误 我通过修改数据对其进行了测试,提交的数据表明成功,但数据库保持不变。下面是更新的-complaint.php。有人能帮忙吗 <?php $host="localhost"; // Host name $username="us

我有一个PHP表单update-complaint.PHP,它有20个字段Q1、Q2-Q20,并显示了当前记录的数据——从这里开始,所有这些都运行良好。在提交时,它会转到updated-complaint.php,数据库中的字段应该更新。如果成功,它会说这样或错误

我通过修改数据对其进行了测试,提交的数据表明成功,但数据库保持不变。下面是更新的-complaint.php。有人能帮忙吗

<?php
$host="localhost"; // Host name 
$username="user"; // Mysql username 
$password="password"; // Mysql password 
$db_name="db"; // Database name 
$tbl_name="complaints"; // Table name 

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

// update data in mysql database 
$sql="UPDATE $tbl_name SET q1='$q1', q2='$q2', q3='$q3' WHERE id='$id'";
$result=mysql_query($sql);

// if successfully updated. 
if($result){
echo "Successful";
echo "<BR>";
echo "<a href='list_records.php'>View result</a>";
}

else {
echo "ERROR";
}

?>
邮寄表格是

        <?php
            $host="localhost"; // Host name 
            $username="user"; // Mysql username 
            $password="password"; // Mysql password 
            $db_name="db"; // Database name 
            $tbl_name="complaints"; // Table name

            mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
            mysql_select_db("$db_name")or die("cannot select DB");

            $id=$_GET['id'];

            // Retrieve data from database 
            $sql="SELECT * FROM $tbl_name WHERE id='$id'";
            $result=mysql_query($sql);
            $rows=mysql_fetch_array($result);

            ?>

        <table width="100%" border="0" class="add-record" align="center" cellpadding="0" cellspacing="1">
        <tr>
        <td><form name="form1" method="post" action="updated-complaint.php">
请注意@Ranjith的评论,即MYSQL_*已被弃用-请改用mysqli

因为我不知道您是使用GET还是POST,所以我刚刚使用了$\u请求,但如果您担心安全性,那么使用POST和$\u POST会更好

还请注意,您应该关注安全性,要么转义数据mysqli_real_escape,要么在执行查询之前准备语句。这些都是重要的问题,但不是问题的中心——因此,这篇文章顶部的答案是正确的

我假设你有一个

<input type="hidden" name="id" value="<?= PRINT THE ID ?>" />
或类似的表单,以便将$_请求['id']提供给update-complaint.php

Database Table Description

CREATE TABLE IF NOT EXISTS `tbl_test` ( `f1` int(3) NOT NULL, `f2` varchar(50) NOT NULL, `f3` varchar(50) NOT NULL ); -- -- Dumping data for table `tbl_test` -- INSERT INTO `tbl_test` (`f1`, `f2`, `f3`) VALUES (1, 'Kathmandu', 'Nepal'), (2, 'Bhaktapur', 'Nepal'); 使用PDO!:

$host="localhost"; // Host name 
$user="user"; // Mysql username 
$pass="password"; // Mysql password 
$dbname="db"; // Database name 
$tableName="complaints"; // Table name 

if ($_POST){
    //for mysql:    
    try {
        //connection: 
        $DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);

       //prepare inserting
       $STH = $DBH->prepare("UPDATE  $tableName (name, address, phone) VALUES (:name,:address,:phone) WHERE id = :id");

       //our placeholders, it's magic)) 
       $data = array(
           'id' => $_POST['id'],
           'name' => $_POST['name'],
           'address' => $_POST['address'],
           'city' => $_POST['city'],
       );

       //and now execute our query and substitute data
       //if execute is successful $result will true else false
       $result = $STH->execute($data);

       if ($result){
           echo "UPDATED!";
       }else{
           echo "Error!";
       }

    } catch(PDOException $e) {  
        echo "cannot connect to database";
        echo $e->getMessage();  
    }
}
p、 很简单。我不检查这个代码,但它必须工作
感谢收听

$sql=UPDATE'$tbl_name'设置q1='$q1',q2='$q2',q3='$q3',其中id='$id';您的表id是数字还是字符id=“$id”?@Ranjith您的意思是mysqli?@Grant您应该检查更新的记录数。查询可能是语法方面的OK,但它更新了0行。您如何从$\u GET['q1']或$\u POST['q1']或$\u REQUEST['q1']获取$q1?$id也是如此。如果上述方法不起作用,请尝试在update-complaint.php中放入echo语句,其中显示$_-REQUEST['id']和$_-REQUEST['q1']等的值。请注意变量区分大小写,因此$_-REQUEST['q1']与$_-REQUEST['q1']不同。这个答案与这个问题有何关系?

List all records

$host="localhost"; // Host name $username="root"; // Mysql username $password=""; // Mysql password $db_name="test"; // Database name $tbl_name="tbl_test"; // Table name // Connect to server and select database. mysql_connect($host, $username, $password) or die("Error: to connect database server"); mysql_select_db($db_name) or die("Error: to select database"); $sql="Select * from ".$tbl_name; $result=mysql_query($sql); echo(""); echo("SNDistrictCountry"); if($result){ while($row = mysql_fetch_array($result)) { echo("".$row["f1"]. "" . $row["f2"]. "" . $row["f3"]. ""); } } else { echo "ERROR: to display record(s)"; }

Update record

// Connect to server and select database. mysql_connect($host, $username, $password) or die("Error: to connect database server"); mysql_select_db($db_name) or die("Error: to select database"); // update data in mysql database $v1=1; $v2='Banepa'; $sql="UPDATE ".$tbl_name." SET f2='".$v2."' WHERE f1=".$v1; echo ($sql); $result=mysql_query($sql); if($result){ echo "Successful"; echo "
"; echo "View result"; } else { echo "ERROR: to update record"; }
$host="localhost"; // Host name 
$user="user"; // Mysql username 
$pass="password"; // Mysql password 
$dbname="db"; // Database name 
$tableName="complaints"; // Table name 

if ($_POST){
    //for mysql:    
    try {
        //connection: 
        $DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);

       //prepare inserting
       $STH = $DBH->prepare("UPDATE  $tableName (name, address, phone) VALUES (:name,:address,:phone) WHERE id = :id");

       //our placeholders, it's magic)) 
       $data = array(
           'id' => $_POST['id'],
           'name' => $_POST['name'],
           'address' => $_POST['address'],
           'city' => $_POST['city'],
       );

       //and now execute our query and substitute data
       //if execute is successful $result will true else false
       $result = $STH->execute($data);

       if ($result){
           echo "UPDATED!";
       }else{
           echo "Error!";
       }

    } catch(PDOException $e) {  
        echo "cannot connect to database";
        echo $e->getMessage();  
    }
}