日期:2014-05-16  浏览次数:20439 次

读取MySQL表中数据出错
下面是一段工作正常的代码
/* 注入基本信息,A_I自动生成meta_id */
$query1 = "INSERT INTO libr_metacode (meta_isbn, meta_cip) VALUES ('$isbn', '$cip')";
$result1 = mysqli_query($dbc,$query1)
  or die('无法写入基本编码,错误信息:' . mysqli_error($dbc));
 
/* 获取meta_id进行后续写入 */
$query = "SELECT * FROM libr_metacode WHERE meta_isbn='$isbn'";
$result = mysqli_query($dbc, $query);
$row = mysqli_fetch_array($result);
$ida = $row['meta_id'];
echo '获得本书藏书库系统元编码' . $ida . '<br />';
 
/* 题名 */
$query2 = "INSERT INTO libr_title (meta_id, title, subtitle, series) VALUES ('$ida', '$title', '$subtitle', '$series')";
$result2 = mysqli_query($dbc,$query2)
  or die('无法写入题名信息,错误:' . mysqli_error($dbc));


做的事情是:

1. 以表单获得的ISBN号(国际标准书号)、CIP号,在meta_code表中插入行 系统元编码 ISBN号 CIP号
2. 利用唯一的ISBN号,在meta_code表中查询图书获得的系统元编码
3. 利用系统元编码在多个表中进行插入

因为ISBN有13位不适合做主键(吧?),所以就这样做了,但是在读取其他数据的时候几乎一模一样的查询代码就出错了。

/* 获取meta_id进行后续写入 */
$query = "SELECT * FROM '$ui_b' WHERE '$ui_c'='$ui_a'";
$result = mysqli_query($dbc, $query);
$row = mysqli_fetch_array($result);
$ida = $row['meta_id'];


报错:mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given.

尽管知道$result应该返回的是一个resource id但是在第一段代码里fetch_array()明明就可以啊,为什么第二段代码里的fetch_array()一定要逻辑值呢?

还有,求问如何才能“echo”出$result的值?
------解决方案--------------------
若 $ui_b 是表名,$ui_c 是字段名
则应写作
$query = "SELECT * FROM $ui_b WHERE $ui_c='$ui_a'";