Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.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_Database_Arrays - Fatal编程技术网

什么';这段php代码怎么了?

什么';这段php代码怎么了?,php,mysql,database,arrays,Php,Mysql,Database,Arrays,我创建了一个web表单,将数据插入mysql数据库。我原以为我有php来插入表单中的数据,但遗憾的是,当我点击submit时,什么也没发生。我确实有正确的主机名和其他数据库详细信息,我只是没有把它们发布在这里 我可能在这段代码中有多个错误。我希望一些专家能给我指出正确的方向 提前谢谢 <?php $con = mysql_connect("hostname","username","password"); if (!$con) { die('Could not connect: '

我创建了一个web表单,将数据插入mysql数据库。我原以为我有php来插入表单中的数据,但遗憾的是,当我点击submit时,什么也没发生。我确实有正确的主机名和其他数据库详细信息,我只是没有把它们发布在这里


我可能在这段代码中有多个错误。我希望一些专家能给我指出正确的方向

提前谢谢

<?php
$con = mysql_connect("hostname","username","password");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("dbname", $con);

$sql="INSERT INTO games (game_name, release_date, game_category, game_type, game_console)
VALUES
('$_POST[game_name]','$_POST[release_date]','$_POST[game_category]','$_POST[game_type]','$_POST[game_console]')";

mysql_query($sql);

$sql2 = "INSERT INTO trophy_totals (game_name, bronze_ttl, silver_ttl, gold_ttl, plat_ttl, hidden_ttl, total_points)
VALUES
('$_POST[game_name]','$_POST[bronze_ttl]','$_POST[silver_ttl]','$_POST[gold_ttl]','$_POST[plat_ttl]','$_POST[hidden_ttl]','$_POST[total_points]')";

mysql_query($sql2);
?>

<?php
    foreach($_POST['trophy'] as $trophy) {
        $sql3 = "INSERT INTO trophies (game_name, tr_name, tr_description, tr_color, tr_ach_value) VALUES ('".$_POST['game_name']."', '".$trophy['name']."', '".$trophy['desc']."', '".$trophy['color']."', '".$trophy['tr_ach_value']."')";
        mysql_query($sql3);
    }
echo "Record added";

mysql_close($con)


?>

首先,看起来您实际上并没有向连接传递正确的值。而不是:

$con = mysql_connect("hostname","username","password");
你应该这样做

$con = mysql_connect("localhost","root","some password");
你的数据库也是如此;您需要的是数据库的实际名称,而不是
dbname
,当然,除非这确实是数据库的名称


另外,要注意如何进行插入等操作。您没有转义任何值,因此易受SQL注入的影响。

您的代码易受SQL注入的影响。您必须转义参数,例如使用mysql\u real\u escape\u字符串。此外,我还可以推荐PDO数据库接口,它独立于DBMS,并且具有更安全的方法


SQL问题?简易解决方案-echo$sql并在sql编辑器中运行它,以查看它是否有效。通过这种方式,我发现了更多的SQL问题。

也启用错误报告()查看代码中有哪些错误


为了警告您,请检查sql注入

尝试在
{}
中转义查询中的
$\u POST
参数,如下所示:

$sql = "INSERT INTO games (game_name, release_date, game_category, game_type, game_console)
VALUES
('{$_POST['game_name']}', '{$_POST['release_date']}', '{$_POST['game_category']}', '{$_POST['game_type']}', '{$_POST['game_console']}')";

其他人关于SQL注入的说法也是正确的。至少,您应该使用mysql\u real\u escape\u string对这些字符串进行转义,但使用PDO或准备好的语句也可能是一个好主意。

这方面不是100%,但可以尝试将您的foreach语句替换为:

for (i = 0; i <=5; i++)
{
    $sql3 = "INSERT INTO trophies (game_name, tr_name, tr_description, tr_color, tr_ach_value) VALUES ('".$_POST['game_name']."', '".$_POST['tr_name'][i]."', '".$_POST['tr_desc'][i]."', '".$_POST['tr_color'][i]."', '".$_POST['tr_arch_value'][i]."')";
    mysql_query($sql3);
}

用于(i=0;我遗漏了什么,或者你除了他可能掩盖的参数之外没有做任何更改吗?如果我猜D.Seckler只是简单地输入这些值,而不是使用他在实际代码中的真实值。语法没有问题。对于我的主机,我必须使用他们给我的主机名,而不是本地主机。我在成功的过去。“根”是什么?我以为数据库的用户名在那里。“当我点击提交时,什么都没发生”。当您点击“提交”时发生了一些事情。是什么?例如,表单已发布到url,但结果页面为空,或者结果页面指示记录已插入,但未插入数据库。此外,请将有关sql注入的警告标题为“root”将是大男孩用户名。主人和指挥官。Alpha.King of kings。或者更简单地说:mysql的默认管理员。“我可能在这个代码中有多个错误”?首先你必须找到它们。启用错误报告。你假设每个查询都成功。至少每个查询调用都应该这样做:
mysql\u查询(…)或者死(mysql_error())
。我认为你对表单的看法是正确的。看起来你实际上没有任何表单元素名为trophy,所以
$\u POST['trophy']
没有得到任何东西。感谢8月份的提示!我会在它上线之前修复它。
for (i = 0; i <=5; i++)
{
    $sql3 = "INSERT INTO trophies (game_name, tr_name, tr_description, tr_color, tr_ach_value) VALUES ('".$_POST['game_name']."', '".$_POST['tr_name'][i]."', '".$_POST['tr_desc'][i]."', '".$_POST['tr_color'][i]."', '".$_POST['tr_arch_value'][i]."')";
    mysql_query($sql3);
}