数据库始终接收相同的ID

时间:2015-02-19 16:18:01

标签: php mysql mysql-workbench

我希望这不是一个糟糕的问题。我一直试图理解我做错了什么,但我无法理解。 我对php和mysql很陌生,所以我真的很困惑......

我有这个数据库(我将附上一个mysql工作台模型截图) mysql database

我试图将销售插入sale和print_for_sale表。查询似乎正在运行,数据显示在phpmyadmin中。没有错误弹出。但是,销售表中的销售用户始终是相同的ID。即使我使用不同的用户登录。在print_for_sale表中,fk_sale_id始终是相同的id。而且price_print_for_sale也一样。这不应该发生。我究竟做错了什么? 谁能帮我? 谢谢!

sale table print_for_sale table

这是我的php代码:

<?php
session_start();
$user_id = $_SESSION['user_id'];
print_r($_POST);

$id_print= $_POST['print_id'];

include('database.php');

$bought_sizes=$_POST['sizes'];

$number_of_bought_sizes= count($bought_sizes);


//header('location:index.php?area=printstore');


$sqlinsertsale = "insert into sale
    (fk_sale_user,
    fk_payment_id) 
    values(".$user_id.", 1)"; 

//付款尚未定义,所以我只是尝试使用1.

mysql_query($sqlinsertsale); 


for($i=0; $i< $number_of_bought_sizes; $i++){

    $selectmultiple = "select * 
    from print_has_size 
    inner join size on fk_size_id = size_id
    inner join print on fk_print_id = print_id 
    where print_id =".$id_print."";

    $resultmultiple = mysql_query($selectmultiple);

    $linemultiple = mysql_fetch_assoc($resultmultiple);

    $size_price = $linemultiple["size_price"];



    $selectsale = "select * 
    from sale";

    $resultsale = mysql_query($selectsale);

    $linesale = mysql_fetch_assoc($resultsale);

    $sale_id = $linesale["sale_id"];

    //$sale_id = mysql_insert_id();

/*PARA CADA 1 DOS TAMNHO*/

$sqlinsertprintforsale = "insert into print_for_sale
    (fk_sale_id,
    price_print_for_sale) 
    values(".$sale_id.", ".$size_price.")";

mysql_query($sqlinsertprintforsale);

} 

?>

我还要附上选择页面的屏幕截图,以便您可以看到标记,以防它有用。

markup

编辑: (我正在添加我检查用户登录的PHP代码)

<?php
session_start();
include('database.php');

$user=mysql_real_escape_string($_POST['user_login']);
$pass=mysql_real_escape_string($_POST['user_pass']);

$sql="select user_id, user_name
    from user
    where
    user_login='".$user."' 
    and user_pass = MD5('".$pass."')";

    echo $sql;

$result = mysql_query($sql);

$num_of_regs = mysql_num_rows($result);

echo "<br>".$num_of_regs;

if($num_of_regs!=1) {
    header('location:index.php?login=done');
}
else {
    $line = mysql_fetch_assoc($result);

    $user_name = $line['user_name'];
    $user_id = $line['user_id'];


    $_SESSION['user_name'] = $user_name;
    $_SESSION['user_id'] = $user_id;

    header('location:index.php');


}

?>

我也做了退出系统。

<?php
session_start();
session_destroy();
header('location:index.php');
 ?> 

现在我注意到销售表没有收到数据.. 只有print_for销售。错误的数据仍然存在。相同的ID ...为什么? :(

这是我使用代码时得到的唯一错误消息      ini_set(&#39; display_errors&#39;,true);的error_reporting(E_ALL);

不推荐使用:mysql_connect():不推荐使用mysql扩展,将来会删除它:在第7行的/Applications/XAMPP/xamppfiles/htdocs/printstore/database.php中使用mysqli或PDO

已添加

 echo $_SESSION['user_id'];

这是我对用户1的输出:

user1

对于用户2: user2

似乎没问题,它识别用户1和2。 当我进行&#34;新购买时,表销售不会被刷新。和表print_for_sale使用相同的销售ID刷新。总是3(如屏幕截图所示)

  • 我在phpmyadmin中删除了销售中的每一行并再次尝试。它正在工作。销售表似乎工作正常。现在唯一的问题是表print_for_sale,即使我使用不同的用户(并且它在销售表中显示确定),它仍然显示相同的sale_id和相同的price_print_price,总是25)。在这种情况下,我从未选择任何花费25的东西。 -

sale_now print_for_sale_now

2 个答案:

答案 0 :(得分:2)

给它一个机会。您似乎得到了相同的结果,因为您从未遍历结果。还要确保您的字段名称与数据库中的字段名称完全相同。

$selectsale = "select * 
from sale";

$resultsale = mysql_query($selectsale);

while($linesale = mysql_fetch_assoc($resultsale))
{
 $sale_id = $linesale["sale_id"];
}

答案 1 :(得分:1)

当您退出时,您应该销毁会话

我假设您有一个注销页面,例如logout.php。在其中你应该设置下面的行。如果你不这样做会话,那么价值就无法改变。

<?php 

session_start();
session_destroy();

?>

此外,如果您将用户ID存储在会话变量中,则仅关闭所有浏览器窗口而不是重新打开和登录将帮助您。

您未来代码生活的额外信息:为什么选择PDO http://code.tutsplus.com/tutorials/why-you-should-be-using-phps-pdo-for-database-access--net-12059