如何将方括号数组中的数据插入数据库?

How can I insert data held within a square bracket array into a database?

我正在尝试将一些数据插入数据库,我有以下代码连接到数据库但没有插入任何结果(只是空行)。

我知道下面的代码不起作用,我只是试图在 PHP 中解释我想要的。问题是数据保存在一个数组中,例如 $tweet['created_at'],我需要它的可变格式,这样我就可以将它插入到数据库中。

非常感谢任何帮助,谢谢!!

if ($_GET) {

            $conn = mysql_connect('localhost', 'user', 'pass')
                or die (mysql_error());

        $tweet['created_at']=$tweet_created_at;
        $tweet['text']=$tweet_text;
        $tweet['location']=$tweet_location;
        $tweet['followers_count']=$tweet_followers_count;
        $tweet['sentiment']=$tweet_sentiment;

        mysql_select_db("db") or die(mysql_error());
        mysql_query("INSERT INTO table (Created_at, Tweet, Location, Number_of_Followers, Semantic_Result) VALUES ('$tweet_created_at', '$tweet_text', '$tweet_location', '$tweet_followers_count', '$tweet_sentiment')", $dbconnect);
        }

Mysql只懂SQL。因此,要将数组插入 mysql 数据库,您必须将其转换为 sql 语句。这可以手动完成或由图书馆完成。输出应该是一个 INSERT 语句。

$columns = implode(", ",array_keys($tweet));
$values = array_map('mysql_real_escape_string', array_values($tweet));
$values  = implode(", ", $values);
$sql = "INSERT INTO `table `($columns) VALUES ($values)";

你可以这样做:

if ($_GET) {

        $conn = mysql_connect('localhost', 'user', 'pass')
            or die (mysql_error());

    $tweet['created_at']=$tweet_created_at;
    $tweet['text']=$tweet_text;
    $tweet['location']=$tweet_location;
    $tweet['followers_count']=$tweet_followers_count;
    $tweet['sentiment']=$tweet_sentiment;

    mysql_select_db("db") or die(mysql_error());
    mysql_query('INSERT INTO `table` (`'.implode('`,`',array_keys($tweet)).'`) VALUES ('.implode("','",array_map('mysql_real_escape_string',$tweet)).')');
    }

我包含 mysql_real_escape_string 因为您应该始终转义您的数据。如果您的数据库仍然有空数据,请检查字符编码并确保正确定义了数据库中的字段。例如关注者的 INT,'text' 的 TEXT,等等...

编辑:我怀疑您正试图从输入字段中检索数据。确保表单不 "POST" (

) 并且字段名称匹配。您还应该使用 $_SERVER['REQUEST_METHOD'] 来确定请求。

如果数据在 url 中。 I.E: page.php?created_at=xxx&.... 那么这个工作正常...

if ($_SERVER['REQUEST_METHOD'] == 'GET') {

    $conn = mysql_connect('localhost', 'user', 'pass') or die (mysql_error());

    $tweet['created_at']=$_GET['tweet_created_at'];
    $tweet['text']=$_GET['tweet_text'];
    $tweet['location']=$_GET['tweet_location'];
    $tweet['followers_count']=$_GET['tweet_followers_count'];
    $tweet['sentiment']=$_GET['tweet_sentiment'];

    mysql_select_db("db") or die(mysql_error());
    mysql_query('INSERT INTO `table` (`'.implode('`,`',array_keys($tweet)).'`) VALUES ('.implode("','",array_map('mysql_real_escape_string',$tweet)).')');
}

干杯伙计们,我已经采纳了你们的一些建议并且我已经开始工作了。

我替换了:

$tweet['created_at']=$tweet_created_at;

与:

$created_at = mysql_real_escape_string( $tweet['created_at'] );

并使用内爆属性

现在可以正常使用了!

谢谢!!!