PHP向数据库添加许多行


PHP add many rows to database

我的数据库有问题。我想在页面加载后添加大约10个新行。它应该检查是否有带有id的文章(实际上正在加载)。如果不是,添加该id的10个不同的标签id。

$sprawdz = "SELECT id_artykulow FROM tag_art WHERE id_artykulow='".$_GET['id']."' " ;
$miasto = mysql_query($sprawdz);   
$a = mysql_num_rows($miasto); 
while ($a<=10){ 
$zm = "SELECT id FROM tag_content ORDER BY RAND() LIMIT 1";
$sw = mysql_query($zm);
while($row3=mysql_fetch_array($sw)){
$zmienna = "INSERT INTO tag_art(id_artykulow, id_tagow) VALUES ('".$_GET['id']."', '".$row3['id']."' ) ";
$cokolwiek = mysql_query($zmienna);
}
$a++; 
}  

有两张表。一个tag_content带有id(标签),另一个tag_art带有id_artykulow(=文章id)和id_tagow(取自tag_content的标签id)不知道为什么,但它没有添加10行(例如,它应该是ten id_artykulow = 10,与不同的id_tagow)。如何解决这个问题?

谢谢你的帮助,如果你需要更多的信息(如更多的代码等),请告诉我

为什么有两个while循环?你能不能把

while ($a<=10){ 
$zm = "SELECT id FROM tag_content ORDER BY RAND() LIMIT 1";

if ($a<=10){ 
$zm = "SELECT id FROM tag_content ORDER BY RAND() LIMIT " . (10-$a);

或者让数据库完成所有的工作:

$query = "INSERT INTO tag_art(id_artykulow, id_tagow) SELECT '".$_GET['id']."', id  FROM tag_content ORDER BY RAND() LIMIT " . (10-$a);

(我也会建议防止sql注入,mysql_real_escape_string())

或者让数据库完成所有的工作:

// store id as mysql-variable, but let php force it to an integer first
mysql_query("SET @id = " . (int) $_GET['id']);
// calculate how many new art we need, to get 10, using greatest to avoid negative numbers
mysql_query("SELECT @art_needed := GREATEST(0, 10 - COUNT(*)) FROM tag_art WHERE id_artykulow = @id");
// Need to use prepere to be able to have an mysql-variable as limit
mysql_query("PREPARE art_stmt FROM 'INSERT INTO tag_art(id_artykulow, id_tagow) SELECT ?, id FROM tag_content ORDER BY RAND() LIMIT ?'");
// execute the query using the mysql-variables
mysql_query("EXECUTE art_stmt USING @id, @art_needed");

只是重读了我的旧答案,不再同意"或者只是让数据库做所有的工作"对于那个答案,数据库可以做更多。