【问题标题】:mysqli will not insertmysqli 不会插入
【发布时间】:2014-10-02 13:43:24
【问题描述】:

我在 php 中有一个根本不会插入的 mysqli insert 语句。它也不会给我任何来自 mysqli_error 的错误消息,它只是失败了。这是代码。

$con=mysqli_connect("localhost","root","root","my_db");
// Check connection
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
function addItems($name, $cost, $type){
$sql= "INSERT INTO `items`(`name`, `cost`, `type`) VALUES ('egg', 50, 'harvest')";
if (!mysqli_query($con,$sql)) {
  die('Error: ' . mysqli_error($con));
}
echo "1 record added";
}

当我调用该函数时,它会很好地创建 sql 变量,但随后它就会死掉。我可以从这个表中选择就好了,但不能插入。正在使用的用户拥有完全权限。

我发现了其他一些似乎有同样问题的人,但他们的解决方案对我不起作用。 我做错了吗?

【问题讨论】:

  • $con 超出功能范围
  • 我知道整数没关系,但请尝试将引号放在 50 左右以防万一。
  • @Dimitri 不会修复它。
  • 将全局添加到 $con 工作。我会尽快将@hd 的答案标记为有效的答案。非常感谢。

标签: php mysql sql mysqli


【解决方案1】:

正如@steve 所说,$con 超出了功能范围。

解决此问题的两种方法。

使用global

function addItems($name, $cost, $type){
 global $con;

注入对象

function addItems($name, $cost, $type, $con){

应该优先考虑第二个选项(对象注入)。全球几乎从来都不是一个好主意

~@steve 和世界。

【讨论】:

  • 应该优先考虑第二个选项。全球几乎从来都不是一个好主意
  • @Steve 同意了!会注意到在答案中
  • @hd 我在调用函数时是否也必须传入 $con ?
  • @DavidEllenburg 是的,你会的
猜你喜欢
  • 2012-08-21
  • 2013-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-20
  • 1970-01-01
  • 2017-12-02
相关资源
最近更新 更多