Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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插入数据库不工作_Php_Mysql - Fatal编程技术网

PHP插入数据库不工作

PHP插入数据库不工作,php,mysql,Php,Mysql,我制作了以下php脚本,以便编辑文本,并将其保存到数据库中供将来使用。然而,我在更新/插入查询时遇到了一个小小的障碍。我不确定我做错了什么,但只有一个命令会执行。我不确定这是一个托管问题还是我做错了什么 有什么想法吗 if (isset($_SESSION["logged"]) && $_SESSION["logged"]==1){ if ($_POST['action']=="edit"){ $query=mysql_query("select *

我制作了以下php脚本,以便编辑文本,并将其保存到数据库中供将来使用。然而,我在更新/插入查询时遇到了一个小小的障碍。我不确定我做错了什么,但只有一个命令会执行。我不确定这是一个托管问题还是我做错了什么

有什么想法吗

if (isset($_SESSION["logged"]) && $_SESSION["logged"]==1){  
    if ($_POST['action']=="edit"){
        $query=mysql_query("select * from page where active=1 AND heading='".$_POST['selectedpage']."'");
        $row = mysql_fetch_array($query, MYSQL_ASSOC);

        echo "<h1>HTML Editor </h1><br>";
        echo "<form name='saveform' action='./action.php'  method='post'>";
        echo "<textarea rows='100' cols='100' name='updateBox'>".$row['content']."</textarea>";
        echo "<br><input name='action' type='submit' value='save edit'>";
        echo "<input name='heading' type='hidden' value='".$row['heading']."'>";
        echo "</form>";
    } else if($_POST['action']=="save edit"){
        $query=mysql_query("UPDATE page SET active='0' where heading='".$_POST['heading']."'");
        $query=mysql_query("INSERT into page(heading,content,active) values('".$_POST['heading']."','".$_POST['updateBox']."','1')");
        echo "<p>Changes saved succesfully!</p>";
        echo "$_POST['updateBox']";
    }
}
if(isset($\u SESSION[“logged”])&&&$\u SESSION[“logged”]==1){
如果($_POST['action']=“edit”){
$query=mysql\u query(“从页面中选择*,其中active=1,heading='”。$\u POST['selectedpage'].“”);
$row=mysql\u fetch\u数组($query,mysql\u ASSOC);
回显“HTML编辑器
”; 回声“; 回显“$row['content']”; 回声“
”; 回声“; 回声“; }如果($_POST['action']==“保存编辑”){ $query=mysql\u query(“更新页面集active='0',其中heading='”$\u POST['heading'].'”); $query=mysql_query(“插入到页面(标题、内容、活动)中)值(“.”“$_POST['heading'.]”,“.”“$_POST['updateBox'.]”,“'1')”; 回显“成功保存的更改!

”; echo“$_POST['updateBox']”; } }
如果在每次运行查询后调用
echo mysql\u error($query)
,您将能够看到该查询是否有错误。您的查询内容可能有问题

您没有对SQL注入执行任何清理,因此如果您的内容中有引号,它将中断您的查询。这是相当危险的(您的查询很容易受到用户输入的SQL注入),您应该考虑使用所有查询变量,或者切换到OR驱动程序。这些驱动程序支持查询绑定,这是防止SQL注入的极好方法

编辑社论:)

另一方面,通常很容易找到一个快速的数据库包装器或函数处理程序来自动处理此类错误。我使用基于类的包装器,但如果您刚才不想走那么远,可以这样做:

//very quick-and-dirty
function queryOrDie($query)
{
    $query = mysql_query($query);
    if (! $query) exit(mysql_error());
    return $query;
}
您只需将所有查询传递给它,就可以更轻松地调试它。也有很多数据库包装器类,我强烈建议您四处看看。他们让生活变得更轻松。:)

有什么错误吗

在脚本的开头添加以下PHP:

ini_set('display_errors', 'On');
error_reporting(E_ALL);
还可以尝试以下方法:

$query=mysql_query("INSERT into page(heading,content,active) values('".$_POST['heading']."','".$_POST['updateBox']."',1)");
另外:)在insert查询中直接使用POST中的数据是一种安全威胁:

确保
标题未定义为键或唯一。这可能会在您的上下文中导致问题。

我还发现PHP(插入)查询不起作用: 我最初的问题是:

mysql_query("INSERT INTO `videousers` (`user_id`,`user_name`,`user_password`,`contact_person`,`organisation`,`contact_tel`,`email`) VALUES ('','{$user}','{$pass}','{$cperson}','{$organ}','{$cphone}','{$email}'");
它不起作用,因此我已更改为以下查询:

mysql_query("INSERT videousers SET user_name='$user',user_password='$pass', contact_person='$cperson', organisation='$organ', contact_tel='cphone', email='$email'");

它成功了。我不知道为什么,但既然它起作用了,我就用它来完成我的工作。

你在最后两行中确实有一些语法错误。我厌倦了看到这样的问题。这让PHP社区看起来很糟糕。使用Wampserver或XAMMP创建您自己的开发环境,并测试代码!哪些命令有效,哪些命令无效?此外,这里还有一些主要的SQL注入缺陷。不要直接从用户提供的输入(POST、GET、COOKIE等)插入数据,除非先在数据上使用mysql_real_escape_字符串,或使用准备好的语句。我猜您在文本区域中键入了撇号-因为您在插入查询中没有转义特殊字符,撇号将终止查询中的字符串,导致语法错误。@Yada-真的!如果每个人都能成为PHP开发专家,我们就不需要有任何PHP问题了!我们应该关闭该网站,对所有没有20年开发经验的人开放!PHP的错误报告函数和设置对数据库错误没有影响,这些错误是通过MySQL(et.al)模块中的特定功能报告的。如果查看MySQL\u错误,您可以看到第一条语句的问题所在。在您的第二个声明中,您并没有试图在用户id中添加任何内容-我怀疑这就是问题所在。