【问题标题】:return from SQL puts a 0从 SQL 中返回一个 0
【发布时间】:2015-12-11 21:42:56
【问题描述】:

任何人都知道为什么每次我从数据库中得到响应时我都会得到一个 0 的回报吗? Fx 如果我在表格中输入数字 5,我会返回 0 5 等。我已经发布了相关代码。

我希望有人可以帮助我。 最好的祝福 朱莉

HTML:

<div class="content">
        <p>Number</p>
            <div class="form">
                <fieldset>
                    <legend>Record Number</legend>
                        <form id="myForm" action="select.php" method="post">
                            <input type="number" name="numbervalue" min="1" max="2">
                            <button id="sub">Save</button>
                        </form>
                </fieldset>
            </div>
            <span id="result"></span>
        </div>

JS

// Insert function for number
function clearInput() {
    $("#myForm :input").each( function() {
         $(this).val('');
    });
}

    $(document).ready(function(){
         $("#sub").click( function(e) { 
       e.preventDefault(); // remove default action(submitting the form)
       $.post( $("#myForm").attr("action"), 
         $("#myForm :input").serializeArray(), 
         function(info){ $("#result").html(info); 
       });
       clearInput();
    });
    })


// Recieve data from database
$(document).ready(function() {
            setInterval(function () {
                $('#show').load('response.php')
            }, 3000);
        });

响应.php

<?php 

include('session.php');

    $query  = "SELECT numbers FROM numbertable";
    $result = mysql_query($query);

    while($row = mysql_fetch_assoc($result))
    {
        echo "{$row['numbers']} <br>";

    } ;

select.php

    <?php

    include('session.php');


// Insert To Database
$strSQL = "INSERT INTO numbertable(numbers) VALUES('" .$_POST["numbervalue"] . "')";


        if(mysql_query("INSERT INTO numbertable VALUES('numbers')"))
            echo "Insert Succesfull";
        else
            echo "Failed";


// The SQL statement is executed 
    mysql_query($strSQL) or die (mysql_error());

// Close the database connection
    mysql_close();

?>

session.php

<?php

// Establishing Connection with Server by passing server_name, user_id and password as a parameter
$connection = mysql_connect("localhost", "root", "root");

// Selecting Database
$db = mysql_select_db("roulette_db", $connection);
session_start();// Starting Session

// Storing Session
$user_check=$_SESSION['login_user'];

// SQL Query To Fetch Complete Information Of User
$ses_sql=mysql_query("SELECT username FROM login WHERE username='$user_check'", $connection);
$row = mysql_fetch_assoc($ses_sql);
$login_session =$row['username'];

if(!isset($login_session)){
    mysql_close($connection); // Closing Connection
    header('Location: index.php'); // Redirecting To Home Page
    }
?>

【问题讨论】:

  • 不知道是否要在此处输入字符串文字 VALUES('numbers') 或作为来自/用于整数的变量(整数需要存储为整数类型)。检查错误,并检查您的控制台。 select.php 你有 INSERT 语法;有点矛盾。
  • 您当前的代码对SQL injection开放。使用mysqli_* with prepared statements,或PDOprepared statements
  • “0”可能来自select.php 的响应,而数字来自response.php。您返回一个数字 (0) 作为第一个脚本的输出,然后附加第二个脚本。我不知道select.php 文件中的if 语句发生了什么;没有大括号,所以这似乎不是有效的代码。
  • @Sablefoste if(mysql_query("INSERT INTO numbertable VALUES('numbers')")) 不是无效的,因为没有大括号,这只会使下一行执行(使读取有点混乱,可能会产生意想不到的结果,但没有问题)。查询本身虽然不正确(可能);假设numbersint 列..
  • 非常感谢您的所有回答。我刚刚更正了 if 语句中的大括号。我将尝试在这里调查您的建议。我忘了写“数字”是一个 int 列。

标签: php sql select return


【解决方案1】:

0 来自这一行:

    if(mysql_query("INSERT INTO numbertable VALUES('numbers')"))

字符串'numbers' 被转换为数字0,并被插入到表中。然后它在$strSQL 中执行查询,插入用户提交的号码。然后response.php 检索表中的所有行,因此它返回05

select.php 更改为:

<?php

include('session.php');

// Insert To Database
$strSQL = "INSERT INTO numbertable(numbers) VALUES(" . intval($_POST["numbervalue"]) . ")";

if(mysql_query($strSQL)) {
    echo "Insert Succesfull";
} else {
    echo "Failed: " . mysql_error();
}

mysql_close();

?>

【讨论】:

  • 啊射击...当然有道理。非常感谢。它现在完美运行 :) 祝大家圣诞快乐,感谢您的努力。朱莉向所有人致以最诚挚的问候。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-25
  • 1970-01-01
  • 2017-12-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-18
相关资源
最近更新 更多