PHP SQL语句不工作
请温柔一点,我不是PHP开发人员,也不太懂PHP语言 我有以下SQL PHP语句:PHP SQL语句不工作,php,mysql,Php,Mysql,请温柔一点,我不是PHP开发人员,也不太懂PHP语言 我有以下SQL PHP语句: $SerializedPricingArray = serialize($PricingArray); $signup_order = $i + 1; $SQL_Statement = "SELECT IF (EXISTS (SELECT [p].[planname] FROM [package] [p] WHERE [p].[planid] = 10 AND [p].[planname] = '" . $j
$SerializedPricingArray = serialize($PricingArray);
$signup_order = $i + 1;
$SQL_Statement = "SELECT IF (EXISTS (SELECT [p].[planname] FROM [package] [p] WHERE [p].[planid] = 10 AND [p].[planname] = '" . $json_post['pricestructure']['tld'][$i]['tld'] . "'), \n"
. "(UPDATE [package] SET [pricing] = '" . $SerializedPricingArray . "', [signup_order] = " . $signup_order . "), \n"
. "(INSERT INTO [package] ([planname], [description], [asset_html], [highlight], [planid], [showpackage], [pricing], [style], [automaticactivation], [allowdirectlink], "
. "[sendwelcome], [stockInfo], [emailTemplate], [bundledProducts], [advanced], [signup_order]) VALUES ('" . $json_post['pricestructure']['tld'][$i]['tld'] . "', '', '', "
. "0, 10, 1, '". $SerializedPricingArray . "', 0, 1, 0, 1, 'a:5:{s:12:\"stockEnabled\";i:0;s:14:\"availableStock\";i:0;s:7:\"soldOut\";i:0;s:13:\"acceptSoldOut\";i:0;s:14:\"showStockLevel\";i:0;}', "
. "35, 'a:3:{s:8:\"optional\";a:0:{}s:8:\"required\";a:0:{}s:7:\"coupons\";a:0:{}}', 'a:3:{s:19:\"autoInitiateTranfer\";s:1:\"1\";s:17:\"enableNamesuggest\";s:1:\"1\";s:14:\"maxNamesuggest\";s:1:\"5\";}', "
. $signup_order . ")));\n";
echo "Working on TLD " . $json_post['pricestructure']['tld'][$i]['tld'] . "\n";
$_NULL = mysqli_query($conn, $SQL_Statement);
当我运行代码时,它会遍历循环,但不会对数据库做任何操作
我做错了什么
编辑1
以下是上述代码生成的查询:
SELECT IF (EXISTS (SELECT p.`planname` FROM `package` p WHERE p.`planid` = 10 AND p.`planname` = 'com'),
UPDATE `package` SET
`pricing`='a:2:{s:7:"taxable";i:0;s:9:"pricedata";a:1:{i:0;a:5:{s:9:"registrar";s:4:"enom";i:1;a:5:{s:6:"period";s:1:"1";s:9:"period_id";s:1:"1";s:5:"price";s:5:"11.99";s:8:"transfer";s:5:"11.99";s:5:"renew";s:5:"11.99";}i:2;a:5:{s:6:"period";s:1:"2";s:9:"period_id";s:1:"2";s:5:"price";s:5:"23.98";s:8:"transfer";s:5:"23.98";s:5:"renew";s:5:"23.98";}i:5;a:5:{s:6:"period";s:1:"5";s:9:"period_id";s:1:"5";s:5:"price";s:5:"59.95";s:8:"transfer";s:5:"59.95";s:5:"renew";s:5:"59.95";}i:10;a:5:{s:6:"period";s:2:"10";s:9:"period_id";s:2:"10";s:5:"price";s:6:"119.90";s:8:"transfer";s:6:"119.90";s:5:"renew";s:6:"119.90";}}}}',
`signup_order`=1
WHERE `planid`=10 AND `planname`='COM',
INSERT INTO `package` (`planname`, `description`, `asset_html`, `highlight`, `planid`, `showpackage`, `pricing`, `style`, `automaticactivation`, `allowdirectlink`, `sendwelcome`, `stockInfo`, `emailTemplate`, `bundledProducts`, `advanced`, `signup_order`)
VALUES (
'com',
'',
'',
0,
10,
1,
'a:2:{s:7:"taxable";i:0;s:9:"pricedata";a:1:{i:0;a:5:{s:9:"registrar";s:4:"enom";i:1;a:5:{s:6:"period";s:1:"1";s:9:"period_id";s:1:"1";s:5:"price";s:5:"11.99";s:8:"transfer";s:5:"11.99";s:5:"renew";s:5:"11.99";}i:2;a:5:{s:6:"period";s:1:"2";s:9:"period_id";s:1:"2";s:5:"price";s:5:"23.98";s:8:"transfer";s:5:"23.98";s:5:"renew";s:5:"23.98";}i:5;a:5:{s:6:"period";s:1:"5";s:9:"period_id";s:1:"5";s:5:"price";s:5:"59.95";s:8:"transfer";s:5:"59.95";s:5:"renew";s:5:"59.95";}i:10;a:5:{s:6:"period";s:2:"10";s:9:"period_id";s:2:"10";s:5:"price";s:6:"119.90";s:8:"transfer";s:6:"119.90";s:5:"renew";s:6:"119.90";}}}}',
0,
1,
0,
1,
'a:5:{s:12:"stockEnabled";i:0;s:14:"availableStock";i:0;s:7:"soldOut";i:0;s:13:"acceptSoldOut";i:0;s:14:"showStockLevel";i:0;}',
35,
'a:3:{s:8:"optional";a:0:{}s:8:"required";a:0:{}s:7:"coupons";a:0:{}}', 'a:3:{s:19:"autoInitiateTranfer";s:1:"1";s:17:"enableNamesuggest";s:1:"1";s:14:"maxNamesuggest";s:1:"5";}',
1
)
);
编辑2
我已将代码更改为以下内容:
$StockInfo = "a:5:{s:12:\"stockEnabled\";i:0;s:14:\"availableStock\";i:0;s:7:\"soldOut\";i:0;s:13:\"acceptSoldOut\";i:0;s:14:\"showStockLevel\";i:0;}";
$BundledProducts = "a:3:{s:8:\"optional\";a:0:{}s:8:\"required\";a:0:{}s:7:\"coupons\";a:0:{}}', 'a:3:{s:19:\"autoInitiateTranfer\";s:1:\"1\";s:17:\"enableNamesuggest\";s:1:\"1\";s:14:\"maxNamesuggest\";s:1:\"5\";}";
$SerializedPricingArray = serialize($PricingArray);
$signup_order = $i + 1;
$SQL_Statement = "INSERT INTO package (`planname`, `description`, `asset_html`, `highlight`, `planid`, `showpackage`, `pricing`, `style`, `automaticactivation`, `allowdirectlink`, `sendwelcome`, `stockInfo`, `emailTemplate`, `bundledProducts`, `advanced`, `signup_order`) VALUES ('" . $json_post['pricestructure']['tld'][$i]['tld'] . "', '', '', 0, 10, 1, '". $SerializedPricingArray . "', 0, 1, 0, 1, '" . $StockInfo . "', 35, '" . $BundledProducts . "', " . $signup_order . ") "
. "ON DUPLICATE KEY UPDATE `package` SET `pricing` = VALUES(`pricing`), `signup_order` = VALUES(`signup_order`) WHERE `planid` = 10 AND `planname` = '" . $json_post['pricestructure']['tld'][$i]['tld'] . "';";
$result = mysql_query($conn, $SQL_Statement);
echo "Working on TLD " . $json_post['pricestructure']['tld'][$i]['tld'] . "\n";
echo $result . "\n\n";
当执行PHP页面时,它“似乎”遍历了所有458条记录,但是当我在MySQL上检查表时,只有原来的58条记录
还有其他建议吗
添加1
以下是MySQL表结构:
+---------------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| planname | varchar(45) | NO | | NULL | |
| description | text | NO | | NULL | |
| asset_html | text | NO | | NULL | |
| highlight | text | NO | | NULL | |
| planid | int(11) | NO | | 0 | |
| showpackage | smallint(6) | NO | | 1 | |
| pricing | text | NO | | NULL | |
| style | tinyint(4) | YES | | 0 | |
| automaticactivation | tinyint(4) | YES | | 1 | |
| allowdirectlink | tinyint(4) | NO | | 1 | |
| sendwelcome | tinyint(4) | NO | | 1 | |
| stockInfo | text | NO | | NULL | |
| emailTemplate | smallint(5) | NO | | 0 | |
| bundledProducts | text | NO | | NULL | |
| advanced | text | NO | | NULL | |
| signup_order | int(11) | NO | | 1 | |
+---------------------+-------------+------+-----+---------+----------------+
我认为你的查询有错误。 SQL SERVER和mysql中使用的
[]
必须使用``
有关检查详细信息错误,请使用此
// Check connection
if (mysqli_connect_errno()){
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
// Perform a query, check for error
if (!mysqli_query($conn, $SQL_Statement);){
echo("Error description: " . mysqli_error($con));
}
您的查询不正确首先读取
如果语句sql我认为您的查询有一些错误。
SQL SERVER和mysql中使用的[]
必须使用``
有关检查详细信息错误,请使用此
// Check connection
if (mysqli_connect_errno()){
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
// Perform a query, check for error
if (!mysqli_query($conn, $SQL_Statement);){
echo("Error description: " . mysqli_error($con));
}
您的查询不正确首先读取如果语句sqlI最终找到了解决方案。详情如下:
$StockInfo = "a:5:{s:12:\"stockEnabled\";i:0;s:14:\"availableStock\";i:0;s:7:\"soldOut\";i:0;s:13:\"acceptSoldOut\";i:0;s:14:\"showStockLevel\";i:0;}";
$BundledProducts = "a:3:{s:8:\"optional\";a:0:{}s:8:\"required\";a:0:{}s:7:\"coupons\";a:0:{}}', 'a:3:{s:19:\"autoInitiateTranfer\";s:1:\"1\";s:17:\"enableNamesuggest\";s:1:\"1\";s:14:\"maxNamesuggest\";s:1:\"5\";}";
$SerializedPricingArray = serialize($PricingArray);
$signup_order = $i + 1;
$SQL_SELECT_Statement = "SELECT * FROM package WHERE planname='" . $json_post['pricestructure']['tld'][$i]['tld'] . "';";
$SQL_UPDATE_Statement = "UPDATE package SET pricing='" . $SerializedPricingArray . "', signup_order=" . $signup_order . " WHERE planid=10 AND planname='" . $json_post['pricestructure']['tld'][$i]['tld'] . "';";
$SQL_INSERT_Statement = "INSERT INTO package (`planname`, `description`, `asset_html`, `highlight`, `planid`, `showpackage`, `pricing`, `style`, `automaticactivation`, `allowdirectlink`, `sendwelcome`, `stockInfo`, `emailTemplate`, `bundledProducts`, `advanced`, `signup_order`) VALUES ('" . $json_post['pricestructure']['tld'][$i]['tld'] . "', '', '', '0', 10, 1, '". $SerializedPricingArray . "', 0, 1, 0, 1, '" . $StockInfo . "', 35, '" . $BundledProducts . "', " . $signup_order . ")";
echo "Working on TLD " . $json_post['pricestructure']['tld'][$i]['tld'] . "\n";
$result = mysqli_query($conn, $SQL_SELECT_Statement);
if (mysqli_num_rows($result) > 0 ) {
echo "Updating " . $json_post['pricestructure']['tld'][$i]['tld'] . " . . . .\n\n";
$result2 = mysqli_query($conn, $SQL_UPDATE_Statement);
} else {
echo "Inserting " . $json_post['pricestructure']['tld'][$i]['tld'] . " . . . .\n\n";
$result2 = mysqli_query($conn, $SQL_INSERT_Statement);
}
我终于想出了一个解决办法。详情如下:
$StockInfo = "a:5:{s:12:\"stockEnabled\";i:0;s:14:\"availableStock\";i:0;s:7:\"soldOut\";i:0;s:13:\"acceptSoldOut\";i:0;s:14:\"showStockLevel\";i:0;}";
$BundledProducts = "a:3:{s:8:\"optional\";a:0:{}s:8:\"required\";a:0:{}s:7:\"coupons\";a:0:{}}', 'a:3:{s:19:\"autoInitiateTranfer\";s:1:\"1\";s:17:\"enableNamesuggest\";s:1:\"1\";s:14:\"maxNamesuggest\";s:1:\"5\";}";
$SerializedPricingArray = serialize($PricingArray);
$signup_order = $i + 1;
$SQL_SELECT_Statement = "SELECT * FROM package WHERE planname='" . $json_post['pricestructure']['tld'][$i]['tld'] . "';";
$SQL_UPDATE_Statement = "UPDATE package SET pricing='" . $SerializedPricingArray . "', signup_order=" . $signup_order . " WHERE planid=10 AND planname='" . $json_post['pricestructure']['tld'][$i]['tld'] . "';";
$SQL_INSERT_Statement = "INSERT INTO package (`planname`, `description`, `asset_html`, `highlight`, `planid`, `showpackage`, `pricing`, `style`, `automaticactivation`, `allowdirectlink`, `sendwelcome`, `stockInfo`, `emailTemplate`, `bundledProducts`, `advanced`, `signup_order`) VALUES ('" . $json_post['pricestructure']['tld'][$i]['tld'] . "', '', '', '0', 10, 1, '". $SerializedPricingArray . "', 0, 1, 0, 1, '" . $StockInfo . "', 35, '" . $BundledProducts . "', " . $signup_order . ")";
echo "Working on TLD " . $json_post['pricestructure']['tld'][$i]['tld'] . "\n";
$result = mysqli_query($conn, $SQL_SELECT_Statement);
if (mysqli_num_rows($result) > 0 ) {
echo "Updating " . $json_post['pricestructure']['tld'][$i]['tld'] . " . . . .\n\n";
$result2 = mysqli_query($conn, $SQL_UPDATE_Statement);
} else {
echo "Inserting " . $json_post['pricestructure']['tld'][$i]['tld'] . " . . . .\n\n";
$result2 = mysqli_query($conn, $SQL_INSERT_Statement);
}
我通过去掉“[”和“]”并加上单引号进行了更改,但是这不起作用,所以我尝试在没有单引号的情况下执行它,但仍然没有骰子。您的错误是什么?如果(!mysqli_query($conn,$SQL_Statement);{echo(“错误描述:”.mysqli_Error($con));}
您没有使用单个qoutes“”。必须使用``返回的错误为空空间。这些是向后的单引号吗?echo$SQL\u语句代码>并复制sql查询并直接运行检查错误查询我通过去掉“[”和“]”并加上单引号进行了更改,但是这不起作用,所以我尝试在没有单引号且仍然没有骰子的情况下执行它。您的错误是什么?如果(!mysqli_query($conn,$SQL_Statement);{echo(“错误描述:”.mysqli_Error($con));}
您没有使用单个qoutes“”。必须使用``返回的错误为空空间。这些是向后的单引号吗?echo$SQL\u语句代码>并复制sql查询,直接运行查询以检查错误MySQL 5.5.45是否与重复键上的不一样?我这样问是因为当我只运行update查询时,它工作正常。MySQL 5.5.45是否不喜欢重复键上的
?我这样问是因为当我只运行更新查询时,它工作得很好。