【问题标题】:$_POST Insert into many to many, wrong PHP Syntax?$_POST 插入多对多,PHP 语法错误?
【发布时间】:2018-05-28 15:09:35
【问题描述】:

编辑:忽略任何 SQL 注入或漏洞代码语句:D (学校项目)。

我希望在我的网页上创建一个插入表单,我可以在其中从表格中选择艺术家,包括从表格中选择歌曲,然后将它们组合起来插入组合外键表。

我已经设法在我的网页上仅使用单个艺术家和歌曲下拉菜单进行选择和插入,但希望将每个表中的两个 ID 组合以将它们组合成多个到许多相对表。但是当我按下提交按钮时,什么也没有发生,而且我是一个初学者,不知道我是否错过了实际发布信息的任何重要部分。

故障排除我已经尝试了我的代码,并对其进行了测试。我看看如果我删除我的代码没有问题,所以问题仍然存在于我认为的语法上,正如第一个下拉列表所示,在第二个下拉列表和提交按钮旁边,但问题出在实际处理和 SQL 查询部分,它在哪里从不去数据库..

问题:

正如您在下面看到的,我在左下角出现了一个带有下拉菜单的文本歌曲名称,其中包括带有提交按钮的艺术家姓名。但是我的问题仍然存在,因为从两个下拉列表中选择然后插入到组合表中不起作用,它实际上并没有提交,我希望它发布到数据库中我能做什么。但是有事吗?如有任何问题或帮助,我将不胜感激,这个社区非常棒,非常适合在其中运作!

数据库 PHP

  <form method='POST'>
<?php

include('connect_mysql.php');
if(isset($_POST["mangetilmange"])) {
  $song_id = $_POST["song_id"];
  $artist_id = $_POST["artist_id"];


$sql ="INSERT INTO artist_has_song (song_id, artist_id) VALUES 
('$song_id', '$artist_id')";

if($conn->query($sql)) {
    echo "Completed";

} else {
    echo "Blablalbablablablablablablabl $sql
    ($conn->error.";
}
}
?>

歌曲名称

<?php
$sql = "SELECT * FROM song";
$resultat = $conn->query($sql);

echo "<select name='song_id'>";

while ($rad = $resultat->fetch_assoc()) {
$song_id = $rad["song_id"];
$songname = $rad["songname"];

echo "<option value='$song_id'>$songname</option>";
}

echo "</select>";
?>

艺人姓名

<?php
$sql = "SELECT * FROM artist";
$resultat = $conn->query($sql);

echo "<select name='artist_id'>";

while ($rad = $resultat->fetch_assoc()) {
  $artist_id = $rad["artist_id"];
  $artistname = $rad["artistname"];

echo "<option value='$artist_id'>$artistname</option>";
}

echo "</select>";
?>
</form>
<input type="submit" name="mangetilmange" value ="Submit">

【问题讨论】:

  • sql注入警报!使用参数绑定!
  • @delboy1978uk 这是一个学校项目,而且我还很新,所以我还没有完成保护我的代码的部分:D 感谢您的提醒!
  • 学校项目在互联网上乱扔垃圾,还有更多众所周知容易受到 SQL 注入攻击的代码模式示例......这不是我想加入的学校。
  • 您告诉我们不要担心您的 SQL 注入错误比修复它们花费的时间还多。 没有任何借口。 bind_param 是一行代码,当有人因为一个撇号而破坏您的应用程序时,它将为您节省数小时无意义的调试。

标签: php mysql many-to-many


【解决方案1】:

把你的代码改成这样:

 <form method='POST'>
 <?php

 include('connect_mysql.php');
 if(isset($_POST["mangetilmange"])) {
 $song_id = $_POST["song_id"];
 $artist_id = $_POST["artist_id"];


 $sql ="INSERT INTO artist_has_song (song_id, artist_id) VALUES 
 ('$song_id', '$artist_id')";

 if($conn->query($sql)) {
 echo "Completed";

 } else {
 echo "Blablalbablablablablablablabl"; 
 }
 }
 ?>

 Song Name
 <?php
 $sql = "SELECT * FROM song";
 $resultat = $conn->query($sql);

 echo "<select name='song_id'>";

 while ($rad = $resultat->fetch_assoc()) {
 $song_id = $rad["song_id"];
 $songname = $rad["songname"];

 echo "<option value='$song_id'>$songname</option>";
 }

 echo "</select>";
 ?>

 Artist Name

 <?php
 $sql = "SELECT * FROM artist";
 $resultat = $conn->query($sql);

 echo "<select name='artist_id'>";

 while ($rad = $resultat->fetch_assoc()) {
 $artist_id = $rad["artist_id"];
 $artistname = $rad["artistname"];

 echo "<option value='$artist_id'>$artistname</option>";
 }

 echo "</select>";
 ?>
 <input type="submit" name="mangetilmange" value ="Submit">
 </form>

【讨论】:

  • 非常感谢山姆!结果很完美:)!
  • Welcome Mads,您的问题出在最后一行,还有一些其他语法错误
猜你喜欢
  • 1970-01-01
  • 2014-08-20
  • 1970-01-01
  • 2013-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多