我正在尝试将一个数组存储到一个表中,但它不能正常工作,它会添加表,但它根本不会添加列名。它只是空的
这是整个代码。
<?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!');
?>
答案 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();
}
要指出的事情:
答案 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);
}