嗨所以我必须创建一个博客,而且我在网页上显示我的参赛作品时遇到了一些问题。
<?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的网页上显示它们?
答案 0 :(得分:1)
使用以下内容:
$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 :(得分:0)
你应该使用PDO进行数据库交互,mysql_ *函数是分离的和不安全的。 PDO将清理您的变量以防止SQL注入攻击。
http://code.tutsplus.com/tutorials/why-you-should-be-using-phps-pdo-for-database-access--net-12059
答案 2 :(得分:0)
你有一个&#34;在这里&#34;附加到您的变量:here$textblock = $_POST['textblock'];
还可以尝试:$query = "INSERT INTO yourMySQLTable (title, textblock) VALUES ('" . $title . "','" . $textblock . "')";
答案 3 :(得分:0)
由于已经给出了其他答案以帮助您进行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 injection开放。使用mysqli_*
功能。 (我建议您使用prepared statements或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>