遇到了一个相当无语的问题啊我在php网站中向mysql数据库中插入数据不成功,但是同样的语句用mysql控制台插入就可以,急死我了,大家帮忙看看啊php页面:
<?php
set_time_limit(0);
require ("../include/config.inc.php");
function makedate() {
// 获取当前系统时间
$curtime = getdate();
$curtime =$curtime['year'] . "-".$curtime['mon'] . "-".$curtime['mday'] ; Return $curtime;
}
$typearray = array('image/jpeg','image/jpg','image/pjpeg','image/png','image/gif','image/x-png','image/jpeg','image/bmp');
if(isset($_POST['submit']))
{
$date=makedate();
$title=$_POST['title'];
$des=$_POST['des'];
$author=$_POST['author'];
$source=$_POST['source'];
$error = $_FILES['img']['error'];
$name = $_FILES['img']['name'];
$type = $_FILES['img']['type'];
$size = $_FILES['img']['size'];
$tmpname = $_FILES['img']['tmp_name'];
$msg = "";
$imgshow = "";
foreach($error as $key=>$err)
{
if($err>0)
{
if($err==4)
{
$msg = "没有选择文件";
echo $msg;
exit();
}else
{
$msg = $name[$key]."---上传出错 ;";
echo $msg;
exit();
}
}else
{
if(!in_array($type[$key],$typearray))
{
$msg = $name[$key]."---不支持上传此类型的文件;";
echo $msg;
exit();
}else if($size[0]>2097152)
{
$msg = $name[$key]."---文件超过2M;";
echo $msg;
exit();
}else if(!is_uploaded_file($tmpname[$key]))
{
$msg = $name[$key]."---非法方式提交文件;";
echo $msg;
exit(); }else
{
$ext = explode('.',$name[$key]);
$fname = time().rand(101,999).'.'.end($ext);
$path = "upimage/".$fname;
$upflag = move_uploaded_file($tmpname[$key], $path);
if(!$upflag)
{
$msg = $name[$key]."---转移文件出错;";
echo $msg;
exit();
}else
{
$url = "upimage/".$fname; mysql_pconnect($dbhost,$dbuser,$dbpasswd);
mysql_query("set names 'gb2312'");
$sql = "insert into imgs(title,laiyuan,des,date,author,url)values('$title','$source','$des','$date','$author','$url')";
echo $sql;
try
{
if(mysql_db_query($dbname,$sql))
{
echo "aaaaaaaaaaaaaaaaaaaaaaaaaaa";
}
}catch(Exception $e)
{
echo $e->getMessage();
}
}
}
}
}
}
?>各位神牛帮帮忙啊
<?php
set_time_limit(0);
require ("../include/config.inc.php");
function makedate() {
// 获取当前系统时间
$curtime = getdate();
$curtime =$curtime['year'] . "-".$curtime['mon'] . "-".$curtime['mday'] ; Return $curtime;
}
$typearray = array('image/jpeg','image/jpg','image/pjpeg','image/png','image/gif','image/x-png','image/jpeg','image/bmp');
if(isset($_POST['submit']))
{
$date=makedate();
$title=$_POST['title'];
$des=$_POST['des'];
$author=$_POST['author'];
$source=$_POST['source'];
$error = $_FILES['img']['error'];
$name = $_FILES['img']['name'];
$type = $_FILES['img']['type'];
$size = $_FILES['img']['size'];
$tmpname = $_FILES['img']['tmp_name'];
$msg = "";
$imgshow = "";
foreach($error as $key=>$err)
{
if($err>0)
{
if($err==4)
{
$msg = "没有选择文件";
echo $msg;
exit();
}else
{
$msg = $name[$key]."---上传出错 ;";
echo $msg;
exit();
}
}else
{
if(!in_array($type[$key],$typearray))
{
$msg = $name[$key]."---不支持上传此类型的文件;";
echo $msg;
exit();
}else if($size[0]>2097152)
{
$msg = $name[$key]."---文件超过2M;";
echo $msg;
exit();
}else if(!is_uploaded_file($tmpname[$key]))
{
$msg = $name[$key]."---非法方式提交文件;";
echo $msg;
exit(); }else
{
$ext = explode('.',$name[$key]);
$fname = time().rand(101,999).'.'.end($ext);
$path = "upimage/".$fname;
$upflag = move_uploaded_file($tmpname[$key], $path);
if(!$upflag)
{
$msg = $name[$key]."---转移文件出错;";
echo $msg;
exit();
}else
{
$url = "upimage/".$fname; mysql_pconnect($dbhost,$dbuser,$dbpasswd);
mysql_query("set names 'gb2312'");
$sql = "insert into imgs(title,laiyuan,des,date,author,url)values('$title','$source','$des','$date','$author','$url')";
echo $sql;
try
{
if(mysql_db_query($dbname,$sql))
{
echo "aaaaaaaaaaaaaaaaaaaaaaaaaaa";
}
}catch(Exception $e)
{
echo $e->getMessage();
}
}
}
}
}
}
?>各位神牛帮帮忙啊
$sql = "insert into imgs(title,laiyuan,des,date,author,url)values('$title','$source','$des','$date','$author','$url')";
echo $sql;这个传到服务器上能够打印出来吗
mysql_select_db($dbname); //你没有选择一个目标操作数据库,怎么执行SQL呢?
mysql_query("set names 'gb2312'");
首先谢谢大家。
一楼:我用trycatch语句想获取异常信息并输入的,结果目的没有达到,后来改成了 $sql="insert into imgs(title,kind,laiyuan,des,pubdate,author,url)values('$title','$kind','$source','$des','$date','$author','$url')";
// echo $sql;
$result=mysql_query($sql,$conn);
if(!$result)
{
echo mysql_errno()."".mysql_error();
}else
输出了错误号码和错误提示信息,发现插入不了的原因是某些汉字不正确,后来想了想应该是编码的问题,修改了一下编码信息,结果能正确插入了。当然这些mysql_query()等方法自己也不是非常熟悉差别,也是不断上网查找资料,不断修改自己的程序才解决的。呵呵二楼和五楼和八楼:我不知道是不是一定要用那个先选中数据库,因为在我添加新闻的那个页面中就跟这里写的几乎一样,用的是Mysql_db_query($dbname,$sql)语句,就可以执行,呵呵,不过后来我改了我的程序,用到了你们说的那个方法,谢谢啦~~三楼:当时不是着急嘛 发帖子之后怕没有人回复,所以就乱投医啦 多发几个 呵呵四楼和七楼:你们说的很对,想要改错,必须知道错在哪里,所以我改了自己的代码 输出错误代码和错误信息,后来解决啦~~~
呵呵<?php
require ("../include/config.inc.php");
$typearray = array('image/jpeg','image/jpg','image/pjpeg','image/png','image/gif','image/x-png','image/jpeg','image/bmp');
if(isset($_POST['submit']))
{
date_default_timezone_set('PRC');//设置当前时区,如果不设置将与系统时间不一致
$date=date("Y-m-d G:i:s");
$title=$_POST['title'];
$des=$_POST['des'];
$author=$_POST['author'];
$source=$_POST['source'];
$error = $_FILES['img']['error'];
$name = $_FILES['img']['name'];
$type = $_FILES['img']['type'];
$size = $_FILES['img']['size'];
$tmpname = $_FILES['img']['tmp_name'];
$msg = "";
$imgshow = "";
foreach($error as $key=>$err)
{
if($err>0)
{
if($err==4)
{
$msg = "没有选择文件";
echo $msg;
exit();
}else
{
$msg = $name[$key]."---上传出错 ;";
echo $msg;
exit();
}
}else
{
if(!in_array($type[$key],$typearray))
{
$msg = $name[$key]."---不支持上传此类型的文件;";
echo $msg;
exit();
}else if($size[0]>2097152)
{
$msg = $name[$key]."---文件超过2M;";
echo $msg;
exit();
}else if(!is_uploaded_file($tmpname[$key]))
{
$msg = $name[$key]."---非法方式提交文件;";
echo $msg;
exit(); }else
{
$ext = explode('.',$name[$key]);
$fname = time().rand(101,999).'.'.end($ext);
$path = "upimage/".$fname;
$upflag = move_uploaded_file($tmpname[$key], $path);
if(!$upflag)
{
$msg = $name[$key]."---转移文件出错;";
echo $msg;
exit();
}else
{
$url = "upimage/".$fname;
$conn=mysql_connect($dbhost,$dbuser,$dbpasswd);
mysql_query("set names 'gbk'",$conn);
if ($conn==FALSE)
{
echo "<center>服务器连接失败!<br>请刷新后重试。</center>";
return true;
}
do
{
$con=mysql_select_db($dbname,$conn);
}while(!$con);
if ($con==FALSE)
{
echo "<center>打开数据库失败!<br>请刷新后重试。</center>";
return true;
}else
{
$sql="insert into imgs(title,kind,laiyuan,des,pubdate,author,url)values('$title','$kind','$source','$des','$date','$author','$url')";
// echo $sql;
$result=mysql_query($sql,$conn);
if(!$result)
{
echo mysql_errno()."".mysql_error();
}else
{ ?>
<script language='javascript'>
<!--
alert('添加成功!');
-->
</script>
<?php
echo "<META HTTP-EQUIV=REFRESH CONTENT='0;URL=imglist.php?setid=0'>";
} }
}
}
}
}
}
?>
(PHP 4, PHP 5, PECL mysql:1.0)mysql_db_query — 发送一条 MySQL 查询说明
resource mysql_db_query ( string $database , string $query [, resource $ link_identifier ] )
根据查询结果返回一个正的 MySQL 结果资源号,出错时返回 FALSE。本函数会对 INSERT/UPDATE/DELETE 查询返回 TRUE/FALSE 来指示成功或失败。 mysql_db_query() 选择一个数据库并在其上执行查询。如果没有提供可选的连接标识,本函数会去找一个到 MySQL 服务器的已打开的连接,如果找不到已打开连接则会尝试无参数调用 mysql_connect() 来建立一个。 注意此函数不会切换回先前连接到的数据库。换句话说,不能用此函数临时在另一个数据库上执行 sql 查询,只能手工切换回来。强烈建议用户在 sql 查询中使用 database.table 语法来替代此函数。 参见 mysql_connect() 和 mysql_query()。
Note: 自 PHP 4.0.6 起不提倡使用此函数。不要用此函数,用 mysql_select_db() 和 mysql_query() 来替代。