• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP获得HTML表单数据无法写入MySQL数据库

php 搞代码 4年前 (2022-01-23) 11次浏览 已收录 0个评论
文章目录[隐藏]

mysql 数据库 表单

PHP入门,在尝试编写一个图书数据库,数据库写入有一些问题
总界面模块

			<title>		图书录入数据处理 - 藏书		</title>		<meta charset="utf-8">		<link rel="stylesheet" href="add.css">		<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'; /*载入写入数据库模块*/		?>		'><br />		<ul>			<li>/">《<?php echo $title ?>》在豆瓣上的页面</li>			<li>">《<?php echo $title ?>》在亚马逊(中国网站)上的页面</li>		</ul>		</div>	<mark>@本文来源gaodaimacom搞#代%码@网-</mark><strong>搞代gaodaima码</strong>	<div id="bottom">		<button>确认添加</button>				<p id="contact">Developed by SJHSTONE in 2014.</p>		</div>	

数据库连接模块(dbconnect.php)

<?php	$dbc = mysqli_connect('localhost', 'mylibr', 'v3rubaGbdfSSTz88', 'libr')	  or die('无法链接到MySQL数据库');	mysqli_set_charset($dbc,'utf8');

数据写入模块(insert.php)

<?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);

所有从$POST_[]全局变量引用的值都能在echo时正确显示,
能够正常连接并写入libr_metacode表中的13位ISBN、10位CIP数据,
但是无法写入接下来其他表中的数据。

先期涉及的三个表结构:

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)

有兴趣的高手麻烦可以到 http://sjhstone.name/book/sandbox.rar看看源码提提建议,密码forcsdn(运行环境为本地Windows上的WampServer)

回复讨论(解决方案)

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手册 之中


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP获得HTML表单数据无法写入MySQL数据库

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址