<?php
$mysql_host = 'localhost';
$mysql_user = 'root';
$mysql_password = '123456';
$mysql_database = 'cms';
mysql_connect($mysql_host,$mysql_user,$mysql_password) or die(mysql_error());
mysql_select_db($mysql_database) or die (mysql_error());
mysql_query("set name gbk");
if(isset($_post['pname']))
{
$pname = addslashes($_post['pname']);
$pprice = $_post['pprice'];
$pbrand = $_post['pbrand'];
$pmat = $_post['pmat'];
$plenght = $_post['plebght'];
$pcategroy = $_post['pcategroy'];
$ocategroy = $_post['ocategroy'];
$pintroducte = $_post['pintroducte'];
$sql = "insert into content values (null,'$pname','$pprice','$pbrand','$pmat','$plenght','$pcategroy','ocategroy','pintroducte',
now(),". floor(rand()*mysql_insert_id()).")";
mysql_query($sql) or die($mysql_error());
}
echo "数据添加成功,点击<a href='addproduct-1.php'>这里</a>返回";
?>这段代码有错吗,为什么不能向mysql数据库中写入数据。

解决方案 »

  1.   

    1. $_post 错误 $_POST  
    变量名区分大小写,你可以加一句$_post = $_POST; 这样就不需要再修改一遍代码
    2. floor(rand()*mysql_insert_id()) 
    mysql_insert_id() 能获取到的是已经执行过插入查询的记录ID,而不是你认为的针对当前还没执行的查询
    3. mysql_query($sql) or die($mysql_error());
    php会尝试寻找$mysql_error这个变量,显然这个变量未定义,那么 $mysql_error() 就会产生错误,即你调用了一个不存在的函数。这句话可能产生致命错误导致后面的消息提示不会显示。当然前提是你的SQL语句本身有错误