Php 未将注释插入MySQL表
我正在尝试使用下面的代码作为注释系统。它不起作用。我试图插入MySQL表“comment”的信息没有放在那里。知道它为什么不起作用吗 提前感谢, 约翰 关于comments.php:Php 未将注释插入MySQL表,php,mysql,Php,Mysql,我正在尝试使用下面的代码作为注释系统。它不起作用。我试图插入MySQL表“comment”的信息没有放在那里。知道它为什么不起作用吗 提前感谢, 约翰 关于comments.php: echo '<form action="http://www...com/sandbox/comments/comments2.php" method="post"> <input type="hidden" value="'.$_SESSION['loginid'].'" name="
echo '<form action="http://www...com/sandbox/comments/comments2.php" method="post">
<input type="hidden" value="'.$_SESSION['loginid'].'" name="uid">
<input type="hidden" value="'.$submissionid.'" name="submissionid">
<label class="addacomment" for="title">Add a comment:</label>
<input class="commentsubfield" name="comment" type="title" id="comment" maxlength="1000">
<div class="commentsubbutton"><input name="submit" type="submit" value="Submit"></div>
</form>
';
试一试
试一试
任何INSERT语句都需要字段名。因为我不知道你们桌子的确切数字,我来猜一下
mysql_query("INSERT INTO comment(uid,subid,comment) VALUES($uid, $subid, $comment)");
任何INSERT语句都需要字段名。因为我不知道你们桌子的确切数字,我来猜一下
mysql_query("INSERT INTO comment(uid,subid,comment) VALUES($uid, $subid, $comment)");
如果失败,它将返回false
,并可以告诉您原因。还可以查看并使用或准备好的语句
if ( !isset($_POST['comment'], $_POST['uid'], $_POST['submissionid']) ) {
echo '<pre>Debug: Something is missing. _POST=',
htmlspecialchars( print_r($_POST, 1) ),
'</pre>';
die;
}
$comment = mysql_real_escape_string($_POST['comment'], $mysql);
$uid = mysql_real_escape_string($_POST['uid'], $mysql);
$subid = mysql_real_escape_string($_POST['submissionid'], $mysql);
$query = "
INSERT INTO
comment
VALUES
(NULL, '$uid', '$subid', '$comment', NULL, NULL)
";
echo '<pre>Debug query=', htmlspecialchars($query), '</pre>';
$rc=mysql_query($query, $mysql);
if ( !$rc ) {
die( htmlspecialchars(mysql_error()) );
}
if(!isset($\u POST['comment'],$\u POST['uid'],$\u POST['submissionid'])){
echo“调试:缺少某些内容。\u POST=”,
htmlspecialchars(打印($\u POST,1)),
'';
死亡
}
$comment=mysql\u real\u escape\u字符串($\u POST['comment',$mysql);
$uid=mysql\u real\u escape\u字符串($\u POST['uid',$mysql);
$subid=mysql\u real\u escape\u字符串($\u POST['submissionid',$mysql);
$query=”
插入
评论
价值观
(NULL、$uid、$subid、$comment、NULL、NULL)
";
echo“Debug query=”,htmlspecialchars($query),“”;
$rc=mysql\u query($query,$mysql);
如果(!$rc){
die(htmlspecialchars(mysql_error());
}
尝试这个自包含的示例(仅示例,不要这样编写;-))
如果失败,它将返回false
,并可以告诉您原因。
还可以查看并使用或准备好的语句
if ( !isset($_POST['comment'], $_POST['uid'], $_POST['submissionid']) ) {
echo '<pre>Debug: Something is missing. _POST=',
htmlspecialchars( print_r($_POST, 1) ),
'</pre>';
die;
}
$comment = mysql_real_escape_string($_POST['comment'], $mysql);
$uid = mysql_real_escape_string($_POST['uid'], $mysql);
$subid = mysql_real_escape_string($_POST['submissionid'], $mysql);
$query = "
INSERT INTO
comment
VALUES
(NULL, '$uid', '$subid', '$comment', NULL, NULL)
";
echo '<pre>Debug query=', htmlspecialchars($query), '</pre>';
$rc=mysql_query($query, $mysql);
if ( !$rc ) {
die( htmlspecialchars(mysql_error()) );
}
if(!isset($\u POST['comment'],$\u POST['uid'],$\u POST['submissionid'])){
echo“调试:缺少某些内容。\u POST=”,
htmlspecialchars(打印($\u POST,1)),
'';
死亡
}
$comment=mysql\u real\u escape\u字符串($\u POST['comment',$mysql);
$uid=mysql\u real\u escape\u字符串($\u POST['uid',$mysql);
$subid=mysql\u real\u escape\u字符串($\u POST['submissionid',$mysql);
$query=”
插入
评论
价值观
(NULL、$uid、$subid、$comment、NULL、NULL)
";
echo“Debug query=”,htmlspecialchars($query),“”;
$rc=mysql\u query($query,$mysql);
如果(!$rc){
die(htmlspecialchars(mysql_error());
}
尝试这个自包含的示例(仅示例,不要这样编写;-))
表单中的有效返回值
做
是否包含有效数据
SQL查询有效
mysql\u查询返回什么
查询时会出现什么错误
使用PDO而不是mysql_query()
我建议你看看哪一个对你有很大的帮助。例如,它确保您的SQL查询是安全的,因为即使将注释添加到您的数据库中,它也可能(将)根本不安全
PHP安全性
您应该始终验证用户的输入,以防止出现错误。幸运的是,当使用PDO(使用准备好的语句,这也会给你提速)时,这将在seens后面为你完成。尽管如此,我还是建议您阅读PHP creator提供的这些快速提示,以保护您的站点
希望这些提示能对您有所帮助。表单中的有效返回值
做
是否包含有效数据
SQL查询有效
mysql\u查询返回什么
查询时会出现什么错误
使用PDO而不是mysql_query()
我建议你看看哪一个对你有很大的帮助。例如,它确保您的SQL查询是安全的,因为即使将注释添加到您的数据库中,它也可能(将)根本不安全
PHP安全性
您应该始终验证用户的输入,以防止出现错误。幸运的是,当使用PDO(使用准备好的语句,这也会给你提速)时,这将在seens后面为你完成。尽管如此,我还是建议您阅读PHP creator提供的这些快速提示,以保护您的站点
希望这些技巧能对您有所帮助。事实上,我不认为您会这样做,如果您要添加所有表字段(不包括标识列等),至少在其他数据库领域是这样;将仔细检查MySQL。如果您不指定字段名,它将插入一整行,这是他正在处理的3个NULL
sNo,no,no。您应该使用字段名明确地指向某些字段,但只要您的数据与表中的字段数匹配,就可以忽略它们。实际上,我不认为你会这样做,如果你添加所有的表字段(不包括标识列等),至少在其他数据库领域是这样的;将仔细检查MySQL。如果您不指定字段名,它将插入一整行,这是他正在处理的3个NULL
sNo,no,no。您应该使用字段名明确地指向某些字段,但只要您的数据与表中的字段数匹配,就可以忽略它们。因此空值。我尝试了这个,它返回了Debug query=INSERT到注释值(NULL,,,,,,,NULL,NULL)这是否意味着查询没有得到变量?看起来确实如此。代码已更新。顺便说一句:您也从输出中复制了元素。您是从浏览器的源代码视图中获取的还是从命令行(cli)中运行此脚本?我运行了代码的更新版本,并得到了调试:缺少某些内容_POST=Array()这是否意味着我的POST做得不对;我想我不需要复制它。添加了一个独立的示例。-你为什么在输入/隐藏中传输loginid而不是在comment2.php中使用_SESSION['loginid']呢?我试过了,它返回了Debug query=INSERT-INTO-comment-VALUES(NULL,,'','','',NULL,NULL)这是否意味着查询没有得到变量?看起来确实如此。代码已更新。顺便说一句:您也从输出中复制了元素。您是从浏览器的源代码视图中获取的还是正在运行此脚本
<?php
session_start();
if ( !isset($_SESSION['loginid']) ) {
login();
}
else if ( !isset($_POST['comment']) ) {
showForm();
}
else {
saveComment();
}
function saveComment() {
if ( !isset($_POST['comment'], $_POST['uid'], $_POST['submissionid']) ) {
echo '<pre>Debug: Something is missing. _POST=',
htmlspecialchars( print_r($_POST, 1) ),
'</pre>';
die;
}
// insert correct values here:
$mysql = mysql_connect('localhost', 'localonly', 'localonly') or die(mysql_error());
mysql_select_db('test', $mysql) or die(mysql_error());
$comment = mysql_real_escape_string($_POST['comment'], $mysql);
$uid = mysql_real_escape_string($_POST['uid'], $mysql);
$subid = mysql_real_escape_string($_POST['submissionid'], $mysql);
$query = "
INSERT INTO
comment
VALUES
(NULL, '$uid', '$subid', '$comment', NULL, NULL)
";
echo '<pre>Debug query=', htmlspecialchars($query), '</pre>';
//$rc=mysql_query($query, $mysql);
//if ( !$rc ) {
//die( htmlspecialchars(mysql_error()) );
//}
}
function login() {
$_SESSION['loginid'] = rand(1, 100);
echo 'Your new loginid is ', $_SESSION['loginid'],'<br />
<a href="?">Continue</a>
';
}
function showForm() {
$submissionid = rand(1000, 9999);
echo '<div>submissionid=', $submissionid, '</div>';
echo '<div>loginid=', $_SESSION['loginid'], '</div>';
echo '<form action="?" method="post">
<input type="hidden" value="'.$_SESSION['loginid'].'" name="uid">
<input type="hidden" value="'.$submissionid.'" name="submissionid">
<label class="addacomment" for="title">Add a comment:</label>
<input class="commentsubfield" name="comment" type="title" id="comment" maxlength="1000">
<div class="commentsubbutton"><input name="submit" type="submit" value="Submit"></div>
</form>
';
}
$comment = $_POST['comment'];
$uid = $_POST['uid'];
$subid = $_POST['submissionid'];
<?php
$result = mysql_query('SELECT * WHERE 1=1');
if (!$result) {
die('Invalid query: ' . mysql_error());
}
?>