gpt4 book ai didi

PHP数据库获取变量

转载 作者:行者123 更新时间:2023-11-29 04:52:34 25 4
gpt4 key购买 nike

除了一个故障外,我有以下代码行可以正常执行。它将变量名称打印到数据库中。

我在我的一张纸条中使用了这段代码:

$con = mysql_connect("MyServer","MyDB","myPwd");
mysql_select_db("MyDB", $con);
$sql = "INSERT INTO `MyDB`.`Shipping` (`ID`, `FIRSTNAME`, `LASTNAME`, `ADDRESS1`, `ADDRESS2`, `CITY`, `STATE`, `ZIP`, `ORDERNUMBER`, `SHIPPINGTYPE`, `item1`, `item2`, `item3`, `item4`, `item5`, `item6`, `item7`, `item8`, `item9`, `item10`) VALUES (NULL, \'$first_name\', \'lname\', \'addr\', \'\', \'city\', \'state\', \'zip\', \'ordernum\', \'\', \'0\', \'0\', \'0\', \'0\', \'0\', \'0\', \'0\', \'0\', \'0\', \'0\');";
mysql_query("$sql");
mysql_close($con);

此代码将以下内容打印到数据库中:

$first_name lname   addr        city    state   zip 0       0   0   0   0   0   0   0   0   0   0

注意打印的是变量名,而不是变量的内容。我怎样才能让它打印出变量内容?

最佳答案

Notice that the variable name, and not the contents of the variable are printed

这是因为您没有将变量传递给插入语句,而是传递了未定义的(?)常量; lname、addr 等。您应该将赋值给的变量传递给:(假设)$lname、$addr 等。

此外,您无需为 ID 列传入 NULL。如果设置为auto_increment,数据库会为你创建这个值。

您还应该利用您的表架构定义的默认列值,这样您就不会最终传递一个巨大的具有默认值的变量列表,例如,如果您有一个 DEFAULT 0 作为 item1、item2、item3 等的架构的一部分,您可以简单地进行以下插入:

$sql =
"INSERT INTO `MyDB`.`Shipping` (`FIRSTNAME`, `LASTNAME`, `ADDRESS1`, `CITY`, `STATE`, `ZIP`, `ORDERNUMBER`) VALUES ('$first_name', '$lname', '$addr', '$city', '$state', '$zip', '$ordernum');";

数据库会自动为您用 0 填充 item1、item2 等列。

正如 cambraca 提到的,如果您像这样将变量直接传递到您的查询中,您将面临 SQL injection 的风险.您应该阅读如何 prepare您的查询,这也将迫使您使用 mysqli(与过时的 mysql 相比)api。或者更好,继续阅读 PDO .

关于PHP数据库获取变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10049318/

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