如何将数组存储到表中?

时间:2014-07-03 08:07:11

标签: php mysql

我正在尝试将一个数组存储到一个表中,但它不能正常工作,它会添加表,但它根本不会添加列名。它只是空的

这是整个代码。

<?php
include 'db.php';

  if(isset($_GET['NAME'])) {
  $sector = mysql_real_escape_string($_GET['SECTORPOSITION']) ; // escape your variable here .
  $name = mysql_real_escape_string($_GET['NAME']) ; // escape your variable here .
  mysql_query("INSERT INTO $sector  (Name) VALUES ('$name') ") or die(mysql_error()) ;
}

    if(isset($_GET['TYPE'])) {
    file_put_contents('contents.txt', $_GET['TYPE'] . "\n", FILE_APPEND);
    }

    if(isset($_GET['ISEXPLORED'])) {
    file_put_contents('contents.txt', $_GET['ISEXPLORED'] . "\n", FILE_APPEND);
    }

    if(isset($_GET['SECTORPOSITION'])) {
        mysql_query("CREATE TABLE `".$_GET['SECTORPOSITION']."` ( Name VARCHAR(30), Type VARCHAR(30), IsExplored VARCHAR(30), SectorPosition VARCHAR(30), guid VARCHAR(30))");
    }

    if(isset($_GET['GUID'])) {
    file_put_contents('contents.txt', $_GET['GUID'] . "\n", FILE_APPEND);
    }

    print('Added!');
?>

'感谢回复' '先移动创建表的代码然后插入该表。你插入然后创建表,你应该做相反的事情。'

问题2

嘿伙计们。我做的时候遇到了问题

/test/test.php?SECTORPOSITION=13137&NAME=hibb&TYPE=Cluster&ISEXPLORED=true&GUID=13我收到语法错误。

但是当我做的时候

?SECTORPOSITION = hey&amp; NAME = hibb&amp; TYPE = Cluster&amp; ISEXPLORED = true&amp; GUID = 13它运作正常吗?

这是我的代码。

<?php
include 'db.php';
    if(isset($_GET['SECTORPOSITION'])) {
        mysql_query("CREATE TABLE `".$_GET['SECTORPOSITION']."` ( Name INT, Type VARCHAR(30), IsExplored VARCHAR(30), SectorPosition INT, guid INT)");
    }


  if(isset($_GET['TYPE'])) {
  $sector = mysql_real_escape_string($_GET['SECTORPOSITION']) ; // escape your variable here .
  $type= mysql_real_escape_string($_GET['TYPE']) ; // escape your variable here .
  $name = mysql_real_escape_string($_GET['NAME']) ; // escape your variable here .
  $isexplored = mysql_real_escape_string($_GET['ISEXPLORED']) ; // escape your variable here 
  $guid = mysql_real_escape_string($_GET['GUID']) ; // escape your variable here 
  mysql_query("INSERT INTO $sector  (Name,Type,IsExplored,SectorPosition,guid) VALUES ('$name','$type','$isexplored','$sector','$guid') ") or die(mysql_error()) ;
}
    print('Added!');
?>

5 个答案:

答案 0 :(得分:2)

你可以这样做

看起来我有一个数组

$array = array(1,2,3,4);

json_encode($array);

并保存json编码值

在db中存储数组并不标准。您可以看到任何cms,它们会将其存储为json编码对象,以便它们可以检索值

答案 1 :(得分:1)

不再使用mysql_函数(这是一个罪恶!),使用改进的。使用mysqli_。像这样:

$con = new mysqli('localhost', 'username', 'password', 'database');
if(isset($_GET['NAME'])) {
    $your_table_whitelist = array('table1', 'table2'); // list your tables
    if(!in_array($_GET['SECTORPOSITION'], $your_table_whitelist, true)) {
        exit; // no table like that found
    }
    $stmt = $con->prepare("INSERT INTO {$_GET['SECTORPOSITION']} (Name) VALUES(?)");
    $stmt->bind_param('s', $_GET['NAME']);
    $stmt->execute();
}

要指出的事情:

  • 您当前的代码对SQL注入开放,使用MYSQLI并改为使用参数化查询。
  • 因为您无法在其中绑定表,只需创建一个表的白名单以与保存表名的变量进行比较。如果它匹配,那么没关系,它只是处理该错误。

答案 2 :(得分:0)

你的代码非常开放sql注入你应该去mysqli或pdo。

if(isset($_GET['NAME'])) {
  $sector = mysql_real_escape_string($_GET['SECTORPOSITION']) ; // escape your variable here .
  $name = mysql_real_escape_string($_GET['NAME']) ; // escape your variable here .
  mysql_query("INSERT INTO $sector  (Name) VALUES ('$name') ") or die(mysql_error()) ;
}

编辑:你有这个错误

 Table 'TheGalaxy.at' doesn't exist

因为你在插入后创建了表,所以还没有创建表。

答案 3 :(得分:-1)

请不要使用mysql函数,因为它们已被弃用,而是使用mysqli。

将数据插入数据库的正确方法如下:

mysqli_query($link, "INSERT INTO tableName values('".$_GET['NAME']."')");

其中$ link是您的连接字符串。喜欢

$link = ("myhost","myUser","myPassword","myDB");

希望这会有所帮助。

答案 4 :(得分:-1)

if(isset($_GET['NAME'])) {
  $sql= "INSERT INTO ".$_GET['SECTORPOSITION']."(name) VALUES(".$_GET['NAME'].")";
 mysql_query($sql);
}