自从我将脚本移动到另一台服务器后,当我尝试插入记录时,我开始收到以下错误。我该如何解决这个问题?
警告: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');
?>
答案 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)。你可能想先研究一下。