无法使用mysql和php向表添加值

时间:2014-10-29 17:04:15

标签: php mysql

我的代码有问题。我正在尝试为表格事件添加新帖子。我很困惑,因为我在同一个网站上的其他地方使用过此代码(但它使用mysqli_query注册新用户)。 mysqql_error返回“No database selected”

这是代码:

<?php
$add_title = $_POST['add_title'];
$add_happen = $_POST['add_happen'];
$add_created = date('Y-m-d');
$add_content = $_POST['add_content'];
$add_author = $_POST['add_author'];

//connect to 
    //localhost
$db_host = "localhost";
$db_username = "root";
$db_password = "";
$db_dbname = "zhp2";
$db_con = mysql_connect($db_host, $db_username, $db_password, $db_dbname); 

$query = "
    INSERT INTO events ( title, happen, created, content, author ) 
    VALUES ( '$add_title', '$add_happen', '$add_created', '$add_content', '$add_author') )
";

$retval = mysql_query($query,  $db_con);
if(! $retval ){
    die('Could not enter data: ' . mysql_error());
}
else{
    echo "Entered data successfully\n";
}

mysql_close($db_con);

//header('Location: ../../index.php?link=events');?>

我尝试使用mysql_query和mysqli_query

的不同组合使用试错法进行修复

3 个答案:

答案 0 :(得分:4)

那么,你需要选择数据库! ;)mysql_connect()的第四个参数不是数据库名称。您需要单独连接到MySQL服务器。

使用mysql_select_db()功能:

$db_host = "localhost";
$db_username = "root";
$db_password = "";
$db_dbname = "zhp2";
$db_con = mysql_connect($db_host, $db_username, $db_password );
mysql_select_db( $db_dbname, $db_con );

当然,所有关于SQL injection的强制性警告,清理您的数据,deprecation of mysql_* functions

答案 1 :(得分:3)

您在传递这些参数的方式上混淆了mysql_connectmysqli_connect函数。在您的示例中:

$db_con = mysql_connect($db_host, $db_username, $db_password, $db_dbname);  

您传递的是第四个参数,即数据库名称,但不能正常工作,因为您应该先传递三个参数(主机,用户名,密码),然后调用mysql_select_db()

$db_con = mysql_connect($db_host, $db_username, $db_password);   
mysql_select_db( $db_dbname, $db_con );

mysqli这是更好的方式,因为mysql_函数非常容易受到攻击并且从php弃用,您可以传递四个元素,例如此处:

$db_con = mysqli_connect($db_host,$db_username, $db_password, $db_dbname) or die("Error " . mysqli_error($link)); 

这与您尝试做的很接近,但是以正确的mysqli_方式。

答案 2 :(得分:0)

您需要使用mysql_select_db功能选择要连接的数据库:

// make $db_dbname the current db
$db_selected = mysql_select_db($db_dbname, $db_con);
if (!$db_selected) {
    die ("Can't use $db_dbname : " . mysql_error());
}

有关详细信息,请参阅PHP手册:http://php.net/manual/en/function.mysql-select-db.php