首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将PHP变量数组发送到MySQL数据库?

问如何将PHP变量数组发送到MySQL数据库?
EN

Stack Overflow用户
提问于 2013-02-19 21:50:44
回答 3查看 317关注 0票数 2

因此,我有一个变量数组,它是从网页中抓取明文数据字符串创建的(使用简单的HTML DOM Parser类)。此变量经过格式化,使其更简洁、更有用。

我现在希望将这些数据导出到一个MySQL表中,该表的表名是网页标题(单独抓取),数据输入是一个数组,其中从网页中提取的每个单词都是一个单独的数据记录。

以下是我的代码(其中$trimmed是从用户输入网页中抓取的数据的格式化变量字符串):

代码语言:javascript
复制
$trimmed->plaintext=trim($trimmed->plaintext);
$array = (explode(" ", $trimmed->plaintext));
$printarray = print_r ($array);

mysql_select_db("test", $connect) or die ('Could not find database.');
$sql = "CREATE TABLE '$title'";

$myquery = sprintf("INSERT INTO WebPage '%s'  
    VALUES '%s'",
    mysql_real_escape_string($title->plaintext),
    mysql_real_escape_string($printarray));
$result = mysql_query($myquery);

if (!$result) {
    $message  = '<br /><br /><br /> Invalid query: ' . mysql_error() . "\n";
    $message .= '<br /><br /> Whole query entered here: ' . $myquery;
    die($message);
}

尝试执行以下操作时收到错误:

无效查询:您的SQL语法中有一个错误;请查看与您的MySQL服务器版本对应的手册,了解要在第1行的‘’示例域‘值'1'’附近使用的正确语法

此处输入的整个查询: INSERT INTO WebPage‘示例域’值'1‘

如果需要,我可以提供更多代码,如果我没有很好地解释这一点,请提前道歉;我对此相当陌生。

提前谢谢。

EN

回答 3

Stack Overflow用户

发布于 2013-02-19 22:00:07

您的SQL:

代码语言:javascript
复制
INSERT INTO WebPage 'Example Domain' VALUES '1'

无效。也许你的意思是:

代码语言:javascript
复制
INSERT INTO `WebPage` ('Example Domain') VALUES ('1')

顺便说一句,如果Example Domain确实是一个列名:您应该在字段名中真正避免空格。

票数 1
EN

Stack Overflow用户

发布于 2013-02-19 22:02:12

这里有很多错误。

首先,您为插入生成的SQL看起来不正确:

代码语言:javascript
复制
INSERT INTO tableName (fields) VALUES (values)

你的代码说:

代码语言:javascript
复制
INSERT INTO WebPage 'plainText' VALUES (array)

如果要创建一个与网页标题类似的表,则应删除网页。另外,它必须是一个单词(用‘_’之类的东西代替空格)。

其次,您需要创建表。在执行插入之前,您需要正确的CREATE TABLE结构。

第三,您的echo print_r不能为每个字段(列)插入一个值。您需要迭代数组,并为每个键插入一个值。但是在创建表列时,您应该已经这样做了。

票数 0
EN

Stack Overflow用户

发布于 2013-02-19 22:05:38

看起来您正在尝试将print_r的输出合并到您的查询中。这是不可能的,因为print_r是一个将数据从数组输出到页面的函数。

为了在数据库中存储数组的内容,可以使用json_encode将数组转换为字符串。然后在检索它时使用json_decode,所以把它改回一个php数组。

例如。

代码语言:javascript
复制
$myquery = sprintf("INSERT INTO `WebPage` ('%s')  
VALUES ('%s')",
json_encode($title->plaintext),
json_encode($array)); //not $printarray as that is not an actual array

edit:正如其他人所指出的,mysql_real_escape_string是一个被弃用的函数,因此应该使用其他方法来转义字符。

edit2:serialize也可以用来代替json_encode,尽管我不确定它的优缺点。一种更理想的方法是重新构造数据库表,以将数组的所有内容作为单独的数据片段容纳,尽管这有时可能并不实用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14959156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档