【问题标题】:Not able to copy data from one table to another无法将数据从一个表复制到另一个表
【发布时间】:2014-05-30 06:44:19
【问题描述】:

我有两个表:tradeuser_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 的格式不正确!??

我该怎么办?

【问题讨论】:

  • 使用 select * into newTableName from oldTablename...
  • 您的查询和 HTML 代码似乎都是错误的。
  • 错误信息是什么?
  • 我感觉您正在混合使用 Javascript 和 PHP。点击 HTML 链接不能直接调用 PHP 函数!在浏览器中检查您的 HTML 源代码以了解发生了什么
  • @steven 好吧,当我运行它时..!有效!但问题是函数直接运行..没有点击它!

标签: javascript php mysql sql


【解决方案1】:

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

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

做你想做的最简单的方法是将口袋妖怪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

【讨论】:

  • 有什么方法可以对用户隐藏它吗?就像我可以使用 POST 而不是 get !??为了安全?
  • 是的,使用 POST 方法的表单。但我认为你不需要向用户隐藏它(取决于口袋妖怪 id 是否必须保密,我不知道你的代码)。只需确保 $_GET['id'] 的内容是数字,例如 is_numeric() 在使用此变量执行任何 sql 查询之前。
  • 哦,谢谢!帮了大忙!
猜你喜欢
  • 2011-05-10
  • 1970-01-01
  • 1970-01-01
  • 2012-11-24
  • 2011-05-16
  • 2023-03-16
  • 1970-01-01
  • 2012-01-07
相关资源
最近更新 更多