Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.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 - Fatal编程技术网

Php 未将注释插入MySQL表

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="

我正在尝试使用下面的代码作为注释系统。它不起作用。我试图插入MySQL表“comment”的信息没有放在那里。知道它为什么不起作用吗

提前感谢,

约翰

关于comments.php:

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());
}

?>