我写一个PHP安装程序 想通过这个页面直接生成数据库
我将SQL语句分别赋值到数组里
$sql[]="create table a ...";
$sql[]="create table b ...";
$sql[]="create table c ...";
然后用foreach循环执行
foreach($sql as $val)
{
  mysql_query($val);
}--------------------------------------------------
上面建库没什么问题然后我希望在程序安装的时候附上一些初始数据 也就是加几篇文章
我同样把insert语句写到了$sql[]中
但是文章嘛 比较长 而且文章是代码类的 很容易起冲突 一直不成功 所以...来请教一下

解决方案 »

  1.   

    如果文章中包含一些代码,可不可以换一种思路呢?比如将文章在本地排版好截图保存成图片,一篇文章一个图片,搞几个图片就行了吧,然后放在某个文件夹下面,你安装程序的时候,只要添加显示图片的html代码进入文章内容字段中
      

  2.   

    冲突原因是没有做如下转义:$article = "i'm john";
    $sql = "insert into articles values('" . addslashes($articles) . "')";
      

  3.   

    好吧 我贴一贴我的insert语句 我觉得挺麻烦的INSERT INTO `pm_code` (`c_id`, `c_title`, `c_desc`, `c_share`, `c_time`, `c_class`, `c_content`) VALUES
    ('', 'JavaScript基础笔记', '程序猿ProMonkey代码分享功能示例', 1, '2012-08-11 18:17:14', 2, '<p>这是一篇已经设置分享的文章示例</p><p>已经分享的文章在文章页内会显示分享链接,任何人都可以通过该链接浏览这篇文章。</p><p>您可以通过“[ 修改 ]”功能修改文章的分享状态。</p><p><span style="background-color:#31859b;color:#ffffff;"><br /></span></p><p><span style="background-color:#31859b;color:#ffffff;">1.加载javascript</span><br /></p><pre class="brush:js;toolbar:false;"><script type="text/javascript">\r\njavascript代码\r\n</script>\r\n可以在head和body中加载,也可以使用外部js脚本文件。\r\n<script src="xxx.js"></script></pre><p><br /></p><p><span style="background-color:#76923c;color:#ffffff;">2.Javascript输出语句</span><br /></p><pre class="brush:js;toolbar:false;">document.write("Hello world");</pre><p><br /></p><p><span style="background-color:#e36c09;color:#ffffff;">3. javascript注释</span><br /></p><pre class="brush:js;toolbar:false;">//单行注释\r\n/*多行注释*/</pre><p><br /></p><p><span style="background-color:#953734;color:#ffffff;">4.变量声明及赋值</span><br /></p><pre class="brush:js;toolbar:false;">var abc;\r\nabc="100";\r\n   \r\n(1)如果未给变量声明,该变量会自动声明。\r\n例:abc="100"; 与 var abc="100"; 效果相同。\r\n   \r\n(2)再次声明 JavaScript 变量,该变量也不会丢失其原始值。\r\nvar x=1;\r\nvar x; \r\n执行语句后,变量 x 的值仍然是 1 。</pre><p><br /></p><p><span style="background-color:#5f497a;color:#ffffff;">5.Javascript的字符串连接</span><br /></p><pre class="brush:js;toolbar:false;">txt1="Lin";\r\ntxt2="Yunpeng";\r\ntxt3=txt1+txt2;\r\n变量txt3的值为LinYunpeng</pre>'),
    ('', '我的PHP学习笔记', '程序猿ProMonkey普通文章示例', 0, '2012-08-11 18:08:55', 1, '<p>环境 wapmserver</p><p>配置文件 httpd.conf Apache日志文件   php.ini PHP配置文件   my.ini MYSQL配置文件</p><p>Alias 虚拟路径</p><p><br /></p><p>单引号与双引号的区别</p><p>单引号内的按原文输出 双引号内的变量及转义可正常输出</p><p>例:</p><p>$a=1;</p><p>echo "$a";   //输出1</p><p>echo '$a';   //输出$a</p><p><br /></p><p>for循环</p><p>for($i=0;$i<10;&i++){循环体}</p><p><br /></p><p>随机数</p><p>rand(1,30)   //产生1-30的随机数</p><p><br /></p><p>SESSION</p><p>$_SESSION["abc"]=$name   //将$name的值传入SESSION会话变量abc</p><p><br /></p><p>floor( )    //向下取整</p><p>ceil( )   //向上取整</p><p>round( )   //四舍五入取整</p><p><br /></p><p>文件引用</p><p>require("abc.php")   完全加载后执行 当引用文件不存在的时候 致命错误</p><p>include("abc.php")   到此段代码时执行 当引用文件不存在的时候 报错 继续执行后面的代码</p><p>require_once("abc.php")  require只加载一次</p><p>include_once("abc.php")  include只加载一次</p>'),
    ('', 'PHP防止SQL注入代码', '程序猿ProMonkey插入代码高亮显示示例', 0, '2012-08-11 18:22:20', 1, '<p>这是一篇PHP代码文章示例</p><p>您可以通过“添加代码”-“插入源代码”功能插入您收集的代码。</p><pre class="brush:php;toolbar:false;"><?php\r\n    \r\nfunction checkIllegalWord\r\n    \r\n{\r\n    \r\n$words[] = array();\r\n    \r\n$words[] = "add";\r\n    \r\n$words[] = "count";\r\n    \r\n$words[] = "create";\r\n    \r\n$words[] = "delete";\r\n    \r\n$words[] = "drop";\r\n    \r\n$words[] = "from";\r\n    \r\n$words[] = "grant";\r\n    \r\n$words[] = "from";\r\n    \r\n$words[] = "insert";\r\n    \r\n$words[] = "select";\r\n    \r\n$words[] = "truncate";\r\n    \r\n$words[] = "update";\r\n    \r\n$words[] = "use";\r\n    \r\n$words[] = "--";\r\n    \r\n//判断提交的数据中是否含有以上关键字 $_REQUEST中含有所有提交数据\r\n    \r\nforeach($_REQUEST as $strGot){\r\n    \r\n$strGot=strolower($strGot);//转换为小写\r\n    \r\nforeach($words as $word){\r\n    \r\nif (strstr($strGot,$word)){\r\n    \r\necho "您输入的内容含有非法字符!";\r\n    \r\nexit;\r\n    \r\n}\r\n    \r\n}\r\n    \r\n}\r\n    \r\n?></pre><p><br /></p>');
      

  4.   


    就是我想把insert语句赋值到数组或变量里
    然后通过mysql_query(这个数组或变量)提交到数据库
      

  5.   

    你最好将遇到的错误信息贴出来。要不然无解。
    mysql_query($val) or die(mysql_error());  //改成这样
      

  6.   


    SQL语句没错 是PHPMYADMIN导出来的 主要是赋值不到数组
      

  7.   


    看楼顶那个帖子 我是做个PHP安装程序
    把SQL语句赋值到数组里
    然后用foreach依次执行SQL语句建库和插入初始数据
    赋值不了应该是和引号有关 但是整个内容比较长 不好找
    所以问问有没好的解决方法或者其他方法
      

  8.   

    insert语句本来就是一条STRING类型数据啊,怎么赋值不到数组里面?里面的单引号没什么关系
      

  9.   


    第四楼就是INSERT句子 你可以试试
      

  10.   

    既然是直接用phpmyadmin导出的sql,那么可以直接用php导入这个sql文件就行了。
      

  11.   

    你 #4 的 SQL 指令中由于含有 php 变量的表示,比如 $words[]
    所以要处理后才能放到数组中
    1、如果是 php5.3以上,那么比较简单,只需
    $sqls[] =<<< 'SQL'
    sql指令
    SQL;2、否则你需要将每句 SQL 指令单独保存到文本文件
    然后用程序组装起来
    $sqls[] = str_replace('$', '\$', file_get_contents('文件名'));
    当然你也可以借助编辑软件,手工将 $ 替换成 \$