mysql 数据库 表单
PHP入门,在尝试编写一个图书数据库,数据库写入有一些问题<!DOCTYPE html><html> <head> <title> 图书录入数据处理 - 藏书 </title> <meta charset="utf-8"> <link rel="stylesheet" href="add.css"> </head> <body> <div id="header"> <h2 id="guidinghead"> 核准预览数据 </h2> </div> <div id="container"> <?php /*载入预定义页面*/ include 'definevar.php'; /*全局变量*/ include 'isbn10to13.php'; /*ISBN-10与ISBN-13转换*/ include 'code2loc.php'; include 'code2lang.php'; include 'code2clssys.php'; include 'code2punit.php'; /*代码??信息转换函数组*/ echo 'ISBN-13 国际标准书号:' . $isbn . '<br />'; echo 'CIP 图书在版编目:' . $cip . '</p>' . '<p>正书名:' . $title . '<br />副书名:' . $subtitle . '<br />丛书名:' . $series . '</p>'; $creator1loc = code2loc($creator_loc_id1); echo '<p>作者1:[' . $creator1loc . ']' . $creator_1 . '<br />'; $creator2loc = code2loc($creator_loc_id2); echo '作者2:[' . $creator2loc . ']' . $creator_2 . '</p>'; $publoc = code2loc($publoc_id); echo '<p>由' . $publoc . '的' . $publisher . '出版<br />'; $language = code2lang($lang_id); echo '此' . $language . '发行版本为' . $edit_date . '第' . $edit_no . '版 ' . $version_date . '第' . $version_no . '次印刷</p>'; echo '<p>关键词组1:' . $subj_key_1 . '?' . $subj_key_2 . '?' . $subj_key_3 . '<br />'; $clssys1 = code2clssys($clssys_id_1); echo '关键词组2:' . $subj_key_4 . '?' . $subj_key_5 . '?' . $subj_key_6 . '<br />'; $clssys1 = code2clssys($clssys_id_1); echo $clssys1 . '分类号:' . $class_no_1 . '<br />'; $clssys2 = code2clssys($clssys_id_2); echo $clssys2 . '分类号:' . $class_no_2 . '</p>'; $priceunit = code2punit($punit_id); echo '<p>价格 ' . $price . $priceunit . ' · 藏本数量 ' . $amount . ' · 相关图书ISBN ' . $rlt_isbn . '</p>'; echo '<p>备注信息' . $noteinfo . '</p>'; echo '<h3>数据库写入信息</h3>'; include 'insert.php'; /*载入写入数据库模块*/ ?> <object type='image/svg+xml' data='bcgen/getbc.php?code=<?php echo $isbn; ?>'></object><br /> <ul> <li><a href="http://book.douban.com/isbn/<?php echo $isbn; ?>/">《<?php echo $title ?>》在豆瓣上的页面</a></li> <li><a href="http://www.amazon.cn/s/field-keywords=<?php echo $isbn; ?>">《<?php echo $title ?>》在亚马逊(中国网站)上的页面</a></li> </ul> </div> <div id="bottom" name="bottom"> <a href="insert.php"><button>确认添加</button></a> <input type="button" value="后退" onclick="javascript:history.back(1)" /> <p id="contact">Developed by SJHSTONE in 2014.</p> </div> </body></html>
<?php $dbc = mysqli_connect('localhost', 'mylibr', 'v3rubaGbdfSSTz88', 'libr') or die('无法链接到MySQL数据库'); mysqli_set_charset($dbc,'utf8');
<?php /*初始连接数据库,连接变量$dbc*/ include 'dbconnect.php'; /*开始写入请求*/ $query1 = "INSERT INTO libr_metacode (meta_isbn, meta_cip) VALUES ('$isbn', '$cip')"; $result = mysqli_query($dbc,$query1) or die('无法写入数据块1'); $query2 = "INSERT INTO libr_title (meta_isbn, title, subtitle, series) VALUES ('$isbn', '$title', '$subtitle', $'series')"; $result = mysqli_query($dbc,$query2) or die('无法写入数据块2'); $query3 = "INSERT INTO libr_author (meta_isbn, creator, creator_id, creatorloc_id) VALUES ('$isbn', '$creator_1', '$creator_loc_id1')"; $result = mysqli_query($dbc,$query3) or die('无法写入数据块3'); /*作者2是否为空*/ if (!empty($creator_2)) { $query4 = "INSERT INTO libr_author (meta_isbn, creator, creator_id, creatorloc_id) VALUES ('$isbn', '$creator_2', '$creator_loc_id2')"; $result = mysqli_query($dbc,$query4) or die('无法写入数据块4'); } else { echo '无写入的作者2信息,不写入数据块4'; } mysqli_close($dbc);
libr_metacode->meta_isbn char(13) 主键->meta_cip int(10)libr_title->meta_isbn char(13) 主键->title varchar(70)->subtitle varchar(50)->series varchar(30)libr_author (一对多)->rec_id int(5) 自动编号主键->creator varchar(30)->creatorloc_id int(3)
VALUES ('$isbn', '$cip')";
全都加转义
addslashes($isbn)
或者
mysql_real_escape_string($isbn)
把形如
or die('无法写入数据块1');
的改为形如
or die('无法写入数据块1' . mysqli_error($dbc));
的,就可知道问题在哪里了
VALUES ('$isbn', '$cip')";
全都加转义
addslashes($isbn)
或者
mysql_real_escape_string($isbn)
都是不需要转义的字符,而且只是在本地测试,暂时还用不着防注入……
不过谢啦!
把形如
or die('无法写入数据块1');
的改为形如
or die('无法写入数据块1' . mysqli_error($dbc));
的,就可知道问题在哪里了
这个纠错功能之前没看到过呢
顺带问一下哪里有参考性质的命令大全呢
一切都在 PHP手册 之中