【问题标题】:unable to add ids to field in mysql from php无法从 php 将 id 添加到 mysql 中的字段
【发布时间】:2014-01-10 03:17:18
【问题描述】:

我正在尝试在名为 all_ids 的字段中将类似数组的 id 添加到 mysql 中,该字段具有与用户关联的所有 id。当添加新 id 时,它应该更新 mysql 字段中的数组如果id已经存在,它不应该做任何事情并回显“找到匹配”。我正在使用php GET从android提供arraylist的值,它被解码为json。但我无法将数组中的所有用户添加到mysql。

非常感谢任何帮助。
提前致谢。

获取代码:

www.example.com\example?$id=[123,234,567,8910,11324,1]&sno=12 

PHP 代码:

<?php


$sno=$_GET['sno'];

$id=$_GET['id'];


if (isset($id))
{

    $query=mysql_query("SELECT  all_ids FROM  `user` where sno='$sno';");

    $gamerow = mysql_fetch_array($query);

    $playerlist = explode(",", $gamerow['all_ids']);

    if( empty( $playerlist ) )
    {
        //empty array
    }else{
        $obj = json_decode($id);

        foreach ($obj as $value) {

            if (in_array($value, $playerlist))
            {
                echo "Match found";
                mysql_query("UPDATE  user  SET all_ids=CONCAT_WS(',',all_ids, '$value') WHERE sno='$sno';");

            }
            else
            {
    mysql_query("INSERT INTO user( sno, all_ids ) VALUES ( $sno, $value);");

                echo "Match not found";

            }
        }
    }

}

?>

【问题讨论】:

  • 考虑将 id 规范化到一个单独的表中。
  • 我的回答告诉你规范化是如何工作的。

标签: php mysql sql


【解决方案1】:

您的设计不正确。您应该有一个单独的表来保存用户的 ID。该表应该有两列,一列用于 id,一列用于用户。然后,您可以插入该其他表或从该表中删除以处理用户的 ID。

并且不要使用mysql扩展!使用 mysqli 或 PDO。 Mysql 扩展现在已经被弃用了很长时间,并且出于多种原因被建议反对至少三年。我正在给你一个 mysqli 的例子。请记住研究如何使用 mysqli 而不是 mysql 连接到数据库。 (实际上并没有太大的不同。)

获取用户的 id(假设 $sno 和 $id 是整数):

$stmt = mysqli_prepare("SELECT id FROM `ids_table` where sno = ?");
mysqli_stmt_bind_param($stmt, "i", $sno);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $id);

$playerlist = array();
while (mysqli_stmt_fetch($stmt)) {
    $playerlist[] = $id;
}

为用户添加 id:

$stmt = mysqli_prepare("INSERT INTO ids_table (id, sno) VALUES (?, ?)");
mysqli_stmt_bind_param($stmt, "ii", $id, $sno);
mysqli_stmt_execute($stmt);

删除用户的id:

$stmt = mysqli_prepare("DELETE FROM ids_table WHERE id = ? AND sno = ?");
mysqli_stmt_bind_param($stmt, "ii", $id, $sno);
mysqli_stmt_execute($stmt);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    • 2022-10-03
    • 1970-01-01
    • 2012-08-17
    • 1970-01-01
    • 2018-11-20
    • 1970-01-01
    相关资源
    最近更新 更多