无法将数据从一个表复制到另一个表

时间:2014-05-30 06:44:20

标签: javascript php mysql sql

我有两张桌子:交易 user_pokemon_db

我想在发生事件时从user_pokemon_db复制特定行。

Html代码:

echo "<a href='tradecenter.php' onClick='document.write(".trade($db_id).")' >Put in Trade</a>";

当用户点击链接时,调用php函数,该函数包含sql查询以复制该行。

$sql = " INSERT INTO trade (trade_id, user_id, pkmn_id, level, exp, health, attack1, attack2, attack3) 
SELECT (id, user_id, pkmn_id, level, exp, health, attack1, attack2, attack3) 
FROM user_pokemon_db WHERE user_id = '".$id."' AND id = '".$db_id."' ";

问题可能是由于查询的写法不正确......或者可能是因为href的格式不正确!

我该怎么办?

1 个答案:

答案 0 :(得分:2)

我不知道你的php函数trade()的内容,但似乎你混淆了javascript和PHP。

请记住,在大多数情况下,一旦将网页发送到用户浏览器,PHP执行就完成了。如果要在链接单击后执行SQL请求,则需要加载新页面或使用Ajax之类的东西再次运行一些PHP代码。

执行所需操作的最简单方法是将pokemon id作为GET变量传递(= URL中的=) 并在另一个页面上检查此变量并生成良好的SQL查询:

echo '<a href="trade.php?pokemon_id='.$id.'" >Trade </a>' ; 

而trade.php会做类似的事情:

$id = $_GET['pokemon_id'] ; // Be Aware of SQL Injections !!
trade($id); 

有关表单的更多信息,请查看此页面:http://www.w3schools.com/php/php_forms.asp

(如果您在SQL查询中使用GET或POST变量,请注意SQL Injections

如果要在不重新加载页面的情况下运行PHP函数,则应使用AJAX。检查此page以了解其工作原理。使用它的一种非常简单的方法是使用jQuery