如何使用PHP在MySQL中添加新列?

时间:2015-08-22 14:25:10

标签: php mysql

如何使用PHP在MySQL中添加新列?我试着这么做几个小时,但我无法解决我的问题。代码:

<?php
$DB_HOST = "localhost";
$DB_USER  = "xxxxxx";
$DB_PASSWORD = "xxxxxx";
$DB_NAME = "xxxxxx";
$connect = mysql_connect($DB_HOST,$DB_USER,$DB_PASSWORD);
$db="test_table";
if (! $connect)
die(mysql_error());
mysql_select_db($db , $connect) or die("Select Error: ".mysql_error());

$result=mysql_query("ALTER TABLE id
ADD street VARCHAR(30) AFTER birthday,
Add city VARCHAR(30) AFTER street,
ADD state VARCHAR(4) AFTER city,
ADD zipcode VARCHAR(20) AFTER state,
ADD phone VARCHAR(20) AFTER zipcode") or die("Alter Error: ".mysql_error());
mysql_close($connect);
print "Field added";
?>

当我测试此代码时,会出现错误:

  

选择错误:用户访问被拒绝&#39; xxxxxxxxxxxx&#39; @&#39; localhost&#39;到数据库&#39; test_table&#39;

我该怎么做?

2 个答案:

答案 0 :(得分:1)

首先确保您的用户拥有this so question here

中所述的权限

可能需要像这样运行一些mysql:

GRANT ALTER ON example_table TO 'someuser'@'somehost';

然后类似的代码应该有效。

<?php

    $db = new mysqli('localhost','USERNAME','PASSWORD','DATABASENAME');

    $sql = '
        ALTER TABLE id
        ADD street VARCHAR(30) AFTER birthday,
        Add city VARCHAR(30) AFTER street,
        ADD state VARCHAR(4) AFTER city,
        ADD zipcode VARCHAR(20) AFTER state,
        ADD phone VARCHAR(20) AFTER zipcode';

    try {
        $r = $db->prepare($sql);
        $r->execute();
    }
    catch(Exception $e) {
        error_log(print_r($e->getMessage(),1).' '.__FILE__.' '.__LINE__, 0);
    }

答案 1 :(得分:0)

您的MySQL用户无法访问您的数据库,但您可以连接到您的MySQL服务器(它会返回错误消息)并在那里登录。

这意味着,用户没有权利使用您的数据库test_table,请再次检查数据库名称(在您的示例中,您提供一个表名,确保您使用的是数据库名称,而不是表名!)。此外,如果是您的服务器,您可以使用root帐户进行尝试。

这不是您的代码问题,而是验证问题。确保使用正确的信息。