PHP MYSQL INSERT不再有效

时间:2011-05-09 12:02:19

标签: php mysql insert

自从我将脚本移动到另一台服务器后,当我尝试插入记录时,我开始收到以下错误。我该如何解决这个问题?

  

警告:mysql_query()期望   参数1为字符串,资源   给定的   /home/aware/public_html/product_submit.php   在第58行

     

警告:mysql_query()期望   参数1为字符串,资源   给定的   /home/aware/public_html/product_submit.php   在第60行

     

警告:mysql_query()期望   参数1为字符串,资源   给定的   /home/aware/public_html/product_submit.php   在第61行

     

警告:mysql_query()期望   参数1为字符串,资源   给定的   /home/aware/public_html/product_submit.php   第62行

     

警告:mysql_query()期望   参数1为字符串,资源   给定的   /home/aware/public_html/product_submit.php   在第63行添加产品

以下是代码:

<?php
  $page_title = "Aware | Product Submitted";
  include('includes/header.html');
  if (!empty($_POST['code'])) {
      $code = $_POST['code'];
  } else {
      $code = null;
      echo '<p><a href="product_create.php">Enter a product code</a>.</p>';
      exit;
  }
  if (!empty($_POST['pid'])) {
      $pid = $_POST['pid'];
  } else {
      $pid = null;
      echo 'Product ID is not defined.  All SKU information must be linked to a product.';
      exit;
  }
  if (!empty($_POST['sid'])) {
      $sid = $_POST['sid'];
  } else {
      $sid = null;
      echo 'SKU ID is not defined.  All SKU information must be linked to a product.';
      exit;
  }
  if (!empty($_POST['image'])) {
      $image_name = $_POST['image'];
  } else {
      $image_name = null;
      echo '<p>You need to upload a product image!</p>';
  }
  if (!empty($_POST['title'])) {
      $title = $_POST['title'];
  } else {
      $title = null;
      echo '<p>You must enter a product title!</p>';
  }
  if (!empty($_POST['description'])) {
      $description = $_POST['description'];
  } else {
      $description = null;
      echo '<p>You must enter a product description!</p>';
  }
  $material = $_POST['material'];
  $type = $_POST['type'];
  $color = $_POST['color'];
  $image_name = $_POST['image'];
  $bulk = $_POST['bulk'];
  $stock = $_POST['stock'];

  // Connect to the db.
  require_once('mysqli_connect.php');
  // Make the query:
  $product = "INSERT INTO product (code, title, description, image_name, bulk) VALUES ('$code', '$title', '$description', '$image_name', '$bulk')";
  $sku = "INSERT INTO sku (product_idproduct, stock) VALUES ('$pid', '$stock')";
  $material = "INSERT INTO amaterial (sku_idsku, material) VALUES ('$sid', '$material')";
  $type = "INSERT INTO atype (sku_idsku, type) VALUES ('$sid', '$type')";
  $color = "INSERT INTO amcolor (sku_idsku, color) VALUES ('$sid', '$color')";
  $p = mysqli_query($dbc, $product);
  // Run the query.
  $s = mysqli_query($dbc, $sku);
  $m = mysqli_query($dbc, $material);
  $t = mysqli_query($dbc, $type);
  $c = mysqli_query($dbc, $color);
  if ($code && $pid && $title && $description) {
      echo "product added";
 } else {
      // Missing form value.
      echo '<p>Please go back and fill out the form again.</p>';
      exit;
  }
  include('includes/footer.html');
?>

2 个答案:

答案 0 :(得分:3)

您的代码如下所示:

$p = mysqli_query($dbc, $product);
$s = mysqli_query($dbc, $sku);
$m = mysqli_query($dbc, $material);
$t = mysqli_query($dbc, $type);
$c = mysqli_query($dbc, $color);

但是,这不是抱怨的代码 - 错误表明它是mysql_query的问题,而不是代码中的mysqli_query

我的预感是,您正在查找与您实际运行的代码不同的代码版本 - 即您认为您在代码中使用mysqli_query,但服务器上的实际代码具有{ {1}}。

除了因功能名称中只有一个字符而容易混淆之外,这两个功能需要一组不同的参数。如果您的代码使用的是mysql_query,那么它是正确的,但是如果您删除了'i'并且您正在使用mysqli_query,那么错误是有道理的,因为mysql_query期望查询字符串成为第一个参数。

在这两者之间进行混合和匹配通常是一个坏主意 - 您应该使用mysql_query函数或mysql_xx,但不能同时使用两者。确保代码是一致的,只使用一个或另一个。

我也回应@ eykanal关于你的代码容易受到SQL注入攻击的评论。您应确保正确转义查询字符串中的所有变量。

答案 1 :(得分:1)

mysqli_query的参数顺序正确。但是错误消息显示'mysql_query'(没有i)。你可能想先研究一下。