日期:2014-05-17  浏览次数:20495 次

请教一个PHP安装程序的小问题
我写一个PHP安装程序 想通过这个页面直接生成数据库
我将SQL语句分别赋值到数组里
$sql[]="create table a ...";
$sql[]="create table b ...";
$sql[]="create table c ...";
然后用foreach循环执行
foreach($sql as $val)
{
  mysql_query($val);
}

--------------------------------------------------
上面建库没什么问题

然后我希望在程序安装的时候附上一些初始数据 也就是加几篇文章
我同样把insert语句写到了$sql[]中
但是文章嘛 比较长 而且文章是代码类的 很容易起冲突 一直不成功 所以...来请教一下

------解决方案--------------------
冲突原因是没有做如下转义:

$article = "i'm john";
$sql = "insert into articles values('" . addslashes($articles) . "')";
------解决方案--------------------
你最好将遇到的错误信息贴出来。要不然无解。
mysql_query($val) or die(mysql_error()); //改成这样
------解决方案--------------------
赋值不到数组是什么意思? 我猜多半都是跟你的单双引号有关吧
------解决方案--------------------
语句复杂可对语句进行转义,特别是里面有单双引号会造成冲突
楼上都说了,对于赋值不了等问题要给出更专业的问题说明
例如报的错误是什么,调试也是解决问题最重要的一步,
没有错误,想方设法让错误输出来,有了错误就找到了问题所在
------解决方案--------------------
你 #4 的 SQL 指令中由于含有 php 变量的表示,比如 $words[]
所以要处理后才能放到数组中
1、如果是 php5.3以上,那么比较简单,只需
$sqls[] =<<< 'SQL'
sql指令
SQL;

2、否则你需要将每句 SQL 指令单独保存到文本文件
然后用程序组装起来
$sqls[] = str_replace('$', '\$', file_get_contents('文件名'));
当然你也可以借助编辑软件,手工将 $ 替换成 \$