【问题标题】:Data is not being stored in the database数据未存储在数据库中
【发布时间】:2011-11-14 23:26:04
【问题描述】:

我的代码正在从另一个表中获取 ID,在获得该 ID 后,我会将其插入到另一个表中。问题是它不起作用,知道为什么吗?

<?php 

session_start(); 
include("Connection.php");
    if (isset($_POST['submit'])){  
    $name = $_POST['customerName'];
    mysql_query("INSERT INTO  `starbucks`.`orders` (
`ID` ,
`NAME` ,
`TOTAL_PRICE` ,
`TOTAL_ITEMS` ,
`TIME`
)
VALUES (
'' ,  '$name',  '', '',NOW())");

$_SESSION['user'] = $name; 
}
$dTime = time();
$myValue = isset($_REQUEST['dValue']) ?$_REQUEST['dValue'] : '';
echo "The time is: {$dTime}<br/>
The choice is {$myValue} ";

$sql = "Select * from product where NAME = '{$myValue}'";
 $result = mysql_query($sql);
while ($row = mysql_fetch_assoc($result)){
    $price = $row['PRICE'];
    $id = $row['ID'];
    echo $id;
    $sql2 ="INSERT INTO starbucks`.order_details (ID, ORDER_ID, PRODUCT_ID, QTY) VALUES ('', '', '$id', '1')";
   $result2 = mysql_query($sql2);
}
?>

【问题讨论】:

  • 查询中的单个`(反勾号)在做什么?
  • 不,将变量替换为 SQL 字符串的方式非常不安全。
  • @Dagon 是对的(应该写一个答案而不是评论)。 INSERT 查询有一个不平衡的反引号,这将阻止它工作。执行 SQL 语句后应检查mysql_error()
  • 其他警告您代码中的 SQL 注入漏洞。如果您想了解该建议,请阅读我的演示文稿SQL Injection Myths and Fallacies
  • 这只是一种练习,我们的教授还没有教我们,所以请多多包涵

标签: php mysql database


【解决方案1】:

插入中的额外反引号,添加另一个或删除

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    • 2021-10-11
    • 2017-08-30
    • 2021-03-16
    相关资源
    最近更新 更多