gpt4 book ai didi

mysql - 在下面的查询中输入 Null 作为 0

转载 作者:行者123 更新时间:2023-11-29 17:15:51 24 4
gpt4 key购买 nike

  1. 在下面的查询中,我将多个 select2 选项中的数组保存到数据库中。
  2. 这里我有一个数据库表参与者,其中包含 event_id(int, not null)、user_id(int, null)、p_mail(varchar, null)。
  3. 当我传递用户中的正确 ID 时,数据会正确保存,并且 p_email 列中将显示 null。
  4. 但是当我通过数组传递一些varchar值时,user_id被保存为0,它应该是NULL,Null被存储在p_email中,它应该存储这些值。

    foreach($resources as $r) {
    global $response;
    $sql = "INSERT INTO participants(event_id, user_id, p_email)
    SELECT $response,
    CASE
    WHEN EXISTS (SELECT * from users where id = '$r') THEN
    '$r'
    ELSE NULL
    END,
    CASE
    WHEN EXISTS (SELECT * from users where id = '$r') THEN
    NULL
    ELSE '$r'
    END
    FROM users WHERE id = 1;";
    $query_result = $conn->query($sql) or die("Failed".$sql);
  5. 这是预期的,在传递 int 的地方,如果 id 存在,则应将其存储在 user_id 列中;否则,如果其 varchar,则应存储在 p_email 中。 enter image description here

  6. 如果我在检查后存储不在用户中的 varchar,而不是将其存储在 p_email 中,则显示。它在 p_email 中存储 null,在 user_id 中存储 0。

最佳答案

我认为这里的问题是 id 列是数字。在第一个测试中,您可能会传递一些合法的数字字符串 id,例如 '123'。 MySQL 在字符串 '123' 和数字 123 之间进行内部转换没有问题。但是,在第二个测试中,您将传递类似 abc 的内容。在本例中,MySQL 似乎将其转换为数值 0。此外,假设 id 零确实存在,您也会在电子邮件列中看到 NULL

所以,我认为这里的更正是将数字绑定(bind)到插入查询,假设 id 列确实是数字。

并且,您应该阅读有关在 MySQL 中使用准备好的语句的信息。

关于mysql - 在下面的查询中输入 Null 作为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51632084/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com