PHP向数据库添加许多行

时间:2011-08-10 07:50:33

标签: php database rows

我的数据库有问题。我想在pageload之后添加大约10个新行。它应该检查是否有一个带有id的文章(实际上正在加载)。如果不是,请添加10个具有不同标记ID的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++; 
}  

有两张桌子。一个带有id(标签)的tag_content,另一个带有id_artykulow的tag_art(=文章的id)和id_tagow(从tag_content中取得的标签的id) 不知道为什么,但它不添加10行(例如应该是10个id_artykulow = 10,具有不同的id_tagow)。如何解决?

请求帮助,如果您需要更多信息(如更多代码等),请告诉我。

2 个答案:

答案 0 :(得分:2)

为什么你有2个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-injections, mysql_real_escape_string()

答案 1 :(得分:0)

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

// 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");

只是重新阅读我的旧答案,并且不再同意“或者只是让数据库完成所有工作”,对于该答案,数据库可以做更多。