今天在弄drupal里面的文件上传是遇到这个问题,至今不明白,还没答案!希望有人知道这个问题!
<strong>先举个例子,来说明这个问题的大概出发点:</strong>
首先,创建一个函数:
<code>
function insert_file()
{
//这里就是执行插入的过程! insert date here!
}
</code>
当我调用这个函数时候!如下:
<code>
insert_file(); //调用上面的函数
</code>
结果查看数据表, 居然插入了不止一条的数据! 我就开始分析原因,在上面的函数开始出加上exit()
<code>
function insert_file()
{
exit();
//这里就是执行插入的过程! insert date here!
}
</code>
<strong>exit(); </strong> 下面的函数就不会执行,数据库里面自然也不会插入数据了。 我于是就在改上面的函数,把exit()放在
<code>
function insert_file()
{
//这里就是执行插入的过程! insert date here!
exit(); //放这里
}
</code>
运行后查看数据库,刚好添加了一条数据,正合我意! <strong>把 exit()取消就是插入多条数据!</strong>
我说的就是drupal里面的 <strong>drupal_write_record</strong>函数!
我先在 template.php 文件里面调用 drupal_write_record 这个函数;传递的参数我用的是
<code>
function insert_s($arg)
{
$dest = 'admin';
$fil = new stdClass();
$fil->filename = 'new'.$arg.'.jpg';
//$file->filepath = $_FILES['files']['tmp_name'][$source];
$fil->filepath = 'sites/default/files/'.$arg.'.jpeg';
//$file->filemime = file_get_mimetype($file->filename);
$fil->filemime = 'image/jpeg';
$fil->source = $source;
//$file->destination = file_destination(file_create_path($dest .'/'. $file->filename), $replace);
$fil->filesize = bcadd($arg,1);
//
$fil->filepath = $file->destination;
$fil->uid = 1;
$fil->status = 1;
$fil->timestamp = time();
//echo '<pre>';
//print_r($fil);
drupal_write_record('files',$fil);
//echo '</pre>';
}
insert_s('test');
</code>
就是上面的这个数据,为什么会这样,我到现在还不知道,希望有谁遇到过!
<strong>我这样写是为了把多张有规律的图片直接 FTP 上传到服务器,而不用手动一张一张添加图片!</strong>
我是在page.tpl.php 里面还有template.php里面调用的,执行结果一样呀,数据库里面插入多条数据!
你的问题和
你的问题和 drupal_write_record('files',$fil)没有关系,关键点在于,调用insert_file()的函数被执行了多次,也就是说,insert_file()放在了一个循环中,使用exit()可以跳出这个循环。
Drupal中的模板文件就可以理解为一个主题函数,在这里,很有可能这个模板文件被循环调用了。即便是你不插入文件,这个模板文件在这里也可能会被循环调用。
所以你的问题的根源,不在于你给的这段代码,而在于更外层的代码,也就是说,和 drupal_write_record()这个函数没有关系。
上面是我的推断。
谢谢帮忙,你说的我也测试了
你说的我也测试了,
我测试了,不exit()的话,我肯定我的代码只执行一次!因为我echo 出的数据就是只有一次! 外面没有循环了!我推测是上面函数调用完了之后,后面的数据数据插入的记录!但是就是找不到原因,这个困惑我几天了! 一直没答案! 希望某高手帮忙呀!
debug一下就知道执行了几次了
debug一下就知道执行了几次了
不知道怎么弄呀!
怎么弄呀,给我说说,我现在对里层不是很熟悉! 谢谢。。。急切希望答案!
安装一个debugger,这样的问题最好使用一个调试器,设
安装一个debugger,这样的问题最好使用一个调试器,设置一个端点,一看就明白了,你的问题太具体了,在调试器里面,很方便就可以看到问题的所在。
你找找,找个好的开发工具和调试器。PHP有很多的。
谢谢帮忙
谢谢帮忙
drupal6里面的files表和那些表有关联呀?
drupal6里面的files表和那些表有关联呀? 高手帮忙!
你只需要把Drupal的数据库的表的结构,手工的抄写一遍,
你只需要把Drupal的数据库的表的结构,手工的抄写一遍,就知道这个表和哪些表关联了.虽然这个办法比较苯.