PHP程序可以正常查询,可就是首次运行此页面出现报错信息,不理次报错输入后执行查询,就正常。
<body>
<?
$db_host=localhost;
$db_user=root;
$db_pass="";
$db_name="shujuku";
$db_table="shujubiao";
$link=mysql_connect($db_host,$db_user,$db_pass) or die("连接数据库时出错".error());
mysql_select_db($db_name,$link);
mysql_query("SET NAMES GB2312");
$fields=mysql_list_fields(shujuku,shujubiao,$link);
$columns=mysql_num_fields($fields);
?>
<form action="cxxs.php" method="post">
<p align="center">
<select name="type" id="type" >
<?
for($i=0;$i<$columns;$i++)
{
$name=mysql_field_name($fields,$i);
echo"<option value='".$name."'>";
switch($name)
{
case "id";
echo "学号";
break;
case "name";
echo "姓名";
break;
break;
case "age";
echo "年龄";
break;
}
echo"</option>";
}
?>
</select>
输入要查询的信息:<input type="text" name="xx" value="8"><input type="submit" value="查询">
</p>
<?
$tp=$_POST["type"];
$x=$_POST["xx"];
$sql="select * from shujubiao where $tp='$x'";
$result=mysql_query($sql) or die("查询时出错".mysql_error());
$num=mysql_num_rows($result);
if($num)
{
?>
<table align="center" width="300" height="300" border="1">
<tr>
<td>序号</td>
<td>学号</td>
<td>姓名</td>
<td>年龄</td>
</tr>
<?
$i=1;
while($row=mysql_fetch_array($result))
{?>
<tr>
<td><?=$i?></td>
<td><?=$row[id]?></td>
<td><?=$row[name]?></td>
<td><?=$row[age]?></td>
</tr>
<?
$i++;
}
?>
</table>
<? }
else
echo"查无此项";
?>
</body>
补充:查询时出错You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '=''' at line 1
尽管出现这个报错,但上面表单输入还可以查偱并且可以查询出正常结果
追问:
就是第一次运行页面出现错误提示,但不用理错误提示,输入数据执行查询就正常,可以输出正常结果,为什么每次第一次运行或刷新,在执行查询前,文本框按钮下就显示这个错误信息,
答案:问题应该出现在这里
$sql="select * from shujubiao where $tp='$x'";
改成
$sql = "SELECT * FROM shujubiao WHERE ".$tp."='".$x."'";
试试。
其他:要么是你的sql语句中缺少单引号,要么是多了单引号,还有一种情况就是写入数据库的字符串本身包含有单引号,导致那段字符串被mysql识别成两段.。因为mysql用两个引号识别成一个值。 你有没有试着用排除法来查出具体是哪一句代码导致它出现这个错误? $db_host=localhost;
$db_user=root;
这里不加引号?
上一个:php高级问题能否实现调用其他网站的处理程序不被拒绝啊
下一个:最近用php写程序,发现从mssql中提取长字符串时只能取到一部分,通常是取到255个字符,再拿多就被截断?