我想问一下我的代码是否正确。
我有这两个爆炸命令:
$url = 'http://google.com, http://yahoo.com, http://msn.com, http://yahoo.com, http://msn.com, http://yahoo.com, http://msn.com';
$key = 'google, yahoo, msn';
$xurl = explode( ',', $url );
$xkey = explode( ',', $key );
foreach ( $xurl as $hyperlink ) {
foreach ( $xkey as $keyword )
$sqlHyperLink = mysql_query( "INSERT INTO jon_hyperlink VALUE( '', '$hyperlink', '$keyword', NOW() )" ) or die ( mysql_error() );
}
echo 'Hyperlink Created';
更新*如果您注意到,$url
变量列出了7个url,我有3个关键字。如何使关键字重复。。。
我如何插入一个foreach
的字符串,因为我在查询中使用了2个foreach
,它插入了2次。有更好的方法吗?
你可以做:
$xurl = explode( ',', $url );
$xkey = explode( ',', $key );
$assoc = array_combine($xkey, $xurl);
foreach ($assoc as $keyword => $hyperlink) {
//insert here
}
使用索引对数组进行锤击。
$numItems = count($xurl);
for ($i=0; $i<$numItems; $i++) {
$sqlHyperLink = mysql_query( "INSERT INTO jon_hyperlink VALUE( '', '{$xurl[$i]}', '{$xkey [$i]}', NOW() )" ) or die ( mysql_error() );
}
理想情况下,请查看PDO,在那里您可以将值绑定到准备好的查询——不过,这是一种更快、更安全、更好的做法!
如果$url和$key按正确的顺序映射在一起,您只需使用一个带有索引的简单for循环,并为每个循环访问两个数组。
for($i = 0; $i < sizeof($key); $i++)
{
mysql_query("insert ... $key[$i] .. $url[$i] ..");
}
$url = 'http://google.com, http://yahoo.com, http://msn.com, http://yahoo.com, http://msn.com, http://yahoo.com, http://msn.com';
$key = 'google, yahoo, msn';
$xurl = explode( ',', $url );
$xkey = explode( ',', $key );
foreach ($xurl as $i => $keyword) {
$sqlHyperLink = mysql_query( "INSERT INTO jon_hyperlink VALUE( '', '{$xkey[$i]}', '$keyword', NOW() )" ) or die ( mysql_error() );
}