簡體   English   中英

HTML表格到MySQL數據庫

[英]html form to mysql database

您好,我必須做一個博客,並且在將我的條目顯示到網頁上時遇到一些問題。

<?xml version = "1.0" encoding = "utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns = "http://www.w3.org/1999/xhtml"> 
<head> <title> Add entry </title> 
</head> 
<body>

<form action = "text1.php" method = "post">

Title: <input type = "text" name = "title"><br>
Body: 
<textarea rows="10" cols="100" name="textblock"></textarea>
<input type = "submit" value = "Add Entry" />
</body> 
</html>

和我的PHP代碼

<?php
$title = $_POST['title'];
$textblock = $_POST['textblock'];
$host   =   "xxxxxx"  ;
$user   =   "xxx"  ;
$pass   =   "xxx"  ;
$db   =   "xxx"  ;


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

$query = "INSERT INTO yourMySQLTable (title, textblock) VALUES ('$title','$textblock')";

mysql_query($query) or die('Error, insert query failed');

?>

我想在另一個網頁上顯示每個條目,包括標題和文本塊,但是由於某些原因,這些值沒有進入表中。 如何將值輸入到表中,以及如何在另一個名為viewblog.php的網頁上顯示它們?

使用以下內容:

$host   =   "xxxxxx"  ;
$user   =   "xxx"  ;
$pass   =   "xxx"  ;
$db   =   "xxx"  ;


// Connect to server and select database.
mysql_connect($host, $username, $password)or die(mysql_error());
mysql_select_db($db)or die(mysql_error());

$title = mysql_real_escape_string($_POST['title']);
$textblock = mysql_real_escape_string($_POST['textblock']);

$query = "INSERT INTO tableName (title, textblock) VALUES ('$title','$textblock')";

mysql_query($query) or die(mysql_error());

要顯示它們:

$query = "SELECT * FROM tableName";
$res = mysql_query($query);
while($row = mysql_fetch_assoc($res)) {
    echo $row['title'] . ' - ' . $row['textblock'] . '<br />';
}
  1. 請注意在使用變量時我是如何不使用“”的,這不是必需的。
  2. 注意我如何使用mysql_real_escape_string,這將使其安全地插入數據庫。
  3. 將所有錯誤消息替換為mysql_error()以顯示實際錯誤(如果有)。
  4. 確保將tableName更新為表的名稱

您應該使用PDO進行數據庫交互,不建議使用mysql_ *函數,並且該函數不安全。 PDO會清理您的變量以防止SQL注入攻擊。

http://code.tutsplus.com/tutorials/why-you-should-be-using-phps-pdo-for-database-access--net-12059

您在變量上附加了“ here”: here$textblock = $_POST['textblock'];

也可以嘗試以下方法: $query = "INSERT INTO yourMySQLTable (title, textblock) VALUES ('" . $title . "','" . $textblock . "')";

由於已給出其他答案來幫助您進行INSERT,因此在此答案中不再贅述。

編輯 :下面已使用mysqli_*函數添加了INSERT方法。

我的第二部分包括:

“我想在另一個網頁上顯示每個條目,包括標題和文本塊”

如果希望顯示數據庫表中的數據,則需要使用循環。

這是基於mysqli_*的版本和非常基本的方法。

<?php

// $db = new mysqli("host", "user", "pw", "db");

// CONNECT TO THE DATABASE

$DB_HOST = "xxx";
$DB_NAME = "xxx";
$DB_PASS = "xxx";
$DB_USER = "xxx";

$db = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);
if($db->connect_errno > 0) {
  die('Connection failed [' . $db->connect_error . ']');
}

$result = $db->query("SELECT * FROM `yourMySQLTable`");

 while($row = $result->fetch_assoc()) {

   echo "<b>Title:</b> " . $row['title'] . " <b>Text:</b> " . $row['textblock'] . "<br>";

 }


mysqli_close($db);

?>

這是一個基於mysqli_*基本版本,可將值插入數據庫。

<?php

DEFINE ('DB_USER', 'xxx');
DEFINE ('DB_PASSWORD', 'xxx');  
DEFINE ('DB_HOST', 'xxx');
DEFINE ('DB_NAME', 'xxx');

$dbc = @mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) 
OR die("could not connect");

$title = mysqli_real_escape_string($dbc,$_POST['title']);
$textblock = mysqli_real_escape_string($dbc,$_POST['textblock']);

$query = ("INSERT INTO `yourMySQLTable` (`title`, `textblock`) 
VALUES ('$title','$textblock')";

 mysqli_query($dbc, $query);

if($query){
echo "SUCCESS!";
}

else {
echo "Sorry!";
}

?>

旁注:您當前的代碼可以進行SQL注入 使用mysqli_*函數。 (我建議您將其與預處理語句PDO一起使用

mysql_*函數已被棄用,並將從以后的PHP版本中刪除。

這里有一些關於准備好的語句的教程,您可以研究和嘗試:

以下是有關PDO的一些教程:

腳注:

您不需要額外的標簽:

<?xml version = "1.0" encoding = "utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns = "http://www.w3.org/1999/xhtml"> 

將其更改為以下即可:

<!DOCTYPE html>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM