[英]Mysql insert is not working on a trade script
你好我和男孩我擁有一個RPG(在線角色扮演游戲)用戶可以抓住怪物並訓練他們的東西。 但現在我來建立一個交易腳本......
我在1頁上顯示所有怪物和其他用戶怪物,但當他們選擇他們想要的東西以及為怪物提供的東西時,它不會將信息添加到數據庫...
所以我有一個頁面,他們必須輸入他們想要交易的用戶名。
<form name="input" action="tradedo.php" method="get">
Username: <input type="text" name="username_trade" />
<input type="submit" value="Submit" />
</form>
然后在tradedo.php上顯示怪物,其他用戶怪物被抓住,他們可以選擇他們想要的東西以及為他們提供的東西......
session_start();
mysql_connect("localhost", "blah", "");
mysql_select_db("");
$username_trade = $_POST['username_trade'];
$_SESSION['username_trade'] = $username_trade ;
echo "You put in id ". $username_trade . ".<br />";
?>
</p>
<p> </p>
<p><span class="mid_box">
<?php
// get and display userbox
$q = "SELECT id,pokemon,exp,level FROM user_pokemon WHERE belongsto='". $_SESSION['username_trade']."'";
$r = mysql_query($q);
if (mysql_num_rows($r) <= 0) {
echo "You have no current pokemon stored";
}
?>
</span></p>
<p> </p>
<p>
<?php
echo "<form action='tradestore.php' method='POST'>";
while ( $v = mysql_fetch_object( $r ) )
{
echo "<label><input type='checkbox' name='pokemon[]' value='$v->dbid'/> They have a $v->pokemon </label><br/>";
echo "<label> Level $v->level </label><br/>";
}
echo "<input type='hidden' name='user' value='$username_trade'/>";
echo "<input type='submit' value='Check!!'/>";
?>
</p>
<p><strong>Pick what you want two offer for the pokemon </strong></p>
<p>
<?php
// get and display userbox
$q = "SELECT id,pokemon,exp,level FROM user_pokemon WHERE belongsto='". $_SESSION['username']."'";
$t = mysql_query($q);
if (mysql_num_rows($t) <= 0) {
echo "You have no current pokemon stored";
}
?>
</p>
<p>
<?php
echo "<form action='test_process.php' method='POST'>";
while ( $v = mysql_fetch_object( $t ) )
{
echo "<label><input type='checkbox' name='pokemonin[]' value='$v->dbid'/> I have a $v->pokemon</label><br/>";
echo "<label> Level $v->level </label><br/>";
}
echo "<input type='hidden' name='userin' value='$username'/>";
echo "</form>";
這很有效....它顯示了所有的怪物,一切都很棒,但現在我需要插入它們,這里是插入頁面
session_start();
mysql_connect("localhost", "blahhhhhhhhhhh", "");
mysql_select_db("");
$pokemon = $_POST['pokemon'];
$pokemonin = $_POST['pokemonin'];
$meid = $_SESSION['username'];
$toid = $_POST['user'];
$dbid = array();
$dbid2 = array();
foreach ( $pokemon as $poke )
{ $dbid['pokemon'][] = $poke;
}
foreach ( $pokemonin as $poke2 )
{ $dbid2['pokemonin'][] = $poke2;
}
srand ((double) microtime( )*1000000);
$random_number = rand( );
echo "$random_number";
mysql_query("INSERT INTO trade (trade_id, trade_to, trade_from, trade_pokeid, trade_mypokeid)
VALUES ('$random_number','".$toid."', '".$meid."', '".$dbid['pokemon']."', '".$dbid2['pokemonin']."');") or die("Error: ". mysql_error());
echo"Done";
在我的db我得到
trade_id = 1977949793(works)
trade_to =
trade_from = admin (works)
trade_pokeid = Array ( no monster ids ???)
trade_mypokeid = Array( no monster ids ???)
是為腳本使用插入怪物ID有1,4,5,7然后id抓住它們並在交易接受頁面上顯示它們..但不是它只是添加數組甚至沒有抓住trade_to我試圖解釋我能做到最好。
db connect我編輯了.....
在INSERT語句中:
... '".$dbid['pokemon']."'
這是一個連接到字符串的數組,不起作用。
您可以序列化或循環並創建一些表示,但最好重新設計數據庫方案,這樣就不會在一個字段中存儲多個值...
$ dbid ['pokemon']和$ dbid2 ['pokemonin']是數組,因此當你連接它們時,它們轉向一個值為“Array”的字符串。
不考慮安全性或性能,這應該工作:
session_start();
mysql_connect("localhost", "blahhhhhhhhhhh", "");
mysql_select_db("");
$pokemon = $_POST['pokemon'];
$pokemonin = $_POST['pokemonin'];
$meid = $_SESSION['username'];
$toid = $_POST['user'];
foreach ( $pokemon as $poke )
{
foreach ( $pokemonin as $poke2 )
{
srand ((double) microtime( )*1000000);
$random_number = rand( );
echo "$random_number";
mysql_query("INSERT INTO trade (trade_id, trade_to, trade_from, trade_pokeid, trade_mypokeid)
VALUES ('$random_number','".$toid."', '".$meid."', '".$poke."', '".$poke2."');") or die("Error: ". mysql_error());
}
}
echo "Done";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.