【问题标题】:How to store random MySQL query for later use?如何存储随机 MySQL 查询以供以后使用?
【发布时间】:2014-04-04 02:47:12
【问题描述】:
$user_name = "xxx";
$password = "xxx";
$database = "xxx";
$server = "xxx";

$db_handle = mysql_connect($server, $user_name, $password);

$db_found = mysql_select_db($database, $db_handle);

$randWordDesc = mysql_query("SELECT * FROM words ORDER BY RAND() LIMIT 1");
$db_field = mysql_fetch_assoc($randWordDesc);

if(isset($_POST['new'])){

$unaltered = $db_field['word'];

$noA = str_replace("a", "b", $unaltered);


}

if (isset($_POST['edit'])){

global $noA;
$noR = str_replace("r", "c", $unaltered);


}

?>


<form action="http://xxx" method="post" ><br><br>
<input type="submit" value="edit current" name = "edit" id="gobutton">&nbsp&nbsp&nbsp
<input type="submit" value="new" name = "new" id="gobutton">
</form>

如果选择了“新”按钮,我现在的代码将拉出一个新单词,并将“a”替换为“b”。我希望“编辑”按钮采用刚刚拉出的完全相同的单词并将“r”替换为“c”。然而,就像现在的代码一样,编辑按钮要么拉出一个新词,要么根本不拉出任何东西。

如何获得编辑按钮来编辑“新建”按钮拉起的查询?我不确定如何通过 id 存储它,但如果有帮助的话,所有列都有一个 id 号。我也知道“SELECT * FROM words ORDER BY RAND() LIMIT 1”是很糟糕的形式,但这是我想在这个问题之后解决的问题。感谢您的帮助。

【问题讨论】:

  • 您正试图用螺丝刀敲钉子。这应该使用 JavaScript 而不是 PHP 来完成。使用 javascript 与用户交互,构建要应用于数据库的更改列表,然后将列表发送到服务器以使用 PHP 应用。

标签: php mysql session


【解决方案1】:

由于第一个查询只返回一个结果,您可以获取结果行的主键列数据并将其存储在页面上的隐藏输入元素中。当您使用编辑按钮时,您将传递隐藏的输入字段值,该值可用于提取与最近一次获取新单词函数调用相同的记录。

考虑以下内容:

<form action="http://xxx" method="post" ><br><br>
<input type="hidden" value=<?php echo $db_field['primary_key']; ?> name="record_id">
<input type="submit" value="edit current" name = "edit" id="gobutton">&nbsp&nbsp&nbsp
<input type="submit" value="new" name = "new" id="gobutton">
</form>

id 将与您的帖子一起传递,然后您可以检查并在选择查询中使用它来获取记录。请务必小心处理数据。考虑更新到当前 API(不推荐使用 mysql~ 函数)和prepared statements

【讨论】:

  • 我使用了您的代码(调整了我的列名),但是当我点击编辑按钮时,它仍然会显示一条新记录。有什么想法吗?
  • 您需要检查 PHP 中的 POST 数据,并在查询中包含处理它的逻辑。例如,if(isset($_POST['record_id'])) { $query = "SELECT * FROM words WHERE your_primary_key = ".$_POST['record_id']; } 从那里运行查询,或者如果未设置 POST 数据,则像以前一样随机获取一个。
  • if(isset($_POST['edit'])) 不能代替吗?我应该检查一下是否按下了编辑按钮?
  • 对于条件,任何一个都可能适合您的意图。但是,从语义上讲,我更愿意将两者分开,这样record_id 值的存在表示要提取特定行,edit 值的存在表示检索到的行的方式(无论它是否是特定的或随机的)被操纵。但是,当然,这只是语义。重要的部分是您已经存储了primary key 的值,因此它可以在条件中使用。
猜你喜欢
  • 1970-01-01
  • 2021-06-15
  • 2011-04-13
  • 1970-01-01
  • 2017-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多