- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
因此,我有一个使用 Ajax/Jquery 将数组 POST 到此 PHP 文件的表单,该文件应该将数组写入 MySQL 数据库。在过去的两周里,我查看了几个示例并改进了代码结构,但我觉得我可能遗漏了一些明显的东西。要么是这样,要么是做一些效率很低的事情。作为其他文件的背景,表单本身有一些带有句点的输入名称,这就是其中有 preg_replace 的原因。 Variables.php 文件包含所有正确的 SQL 登录数据,因为数据的后端查看正在运行。所有不起作用的是数据的实际写入。
但是,如果此代码段看起来应该可以工作,那么我需要再次检查我的 Javascript 文件。
这是 PHP 代码:
include 'variables.php';
if (isset($_POST)){
mysqli_connect($mysql_hostname,$mysql_username,$mysql_password);
mysqli_select_db($con,$mysql_table);
$sql = sprintf('INSERT INTO '.$mysql_table.' (%s) VALUES ("%s")',
implode(',',array_keys(preg_replace("/[^,.]/",$_fields))),
implode('","',array_values(preg_replace("/[^,.]/",$_fields)))
);
mysqli_query($con,$sql);
mysqli_close($con);
};
以下是捕获表单数据的 Javascript 代码:
var orderSubTotal ='46.15';
var orderTotal ='46.15';
var numOfItems ='2';
var items =new Array('item1','item2');
var ids =new Array('id1','id2');
var codes =new Array('code1','code2');
var qtys =new Array('1','1');
var price =new Array('44.95','1.2');
var orderTax ='0';
var orderShipping ='0';
var appliedPromoIdList ='';
var coupon ='';
var storeId ='storeid';
var activeShipPromotionCount ='';
var itemImages =new Array('image1','image2');
$(document).ready(function() {
$("#driver").click(function(event) {
event.PreventDefault();
var date=new Date();
var formData = $("#testform :input[id!='card-type'][id!='paymentSelection_0']"+
"[id!='ccSelectedRadio'][id!='card-number'][id!='card-exp-month'][id!='card-exp-year'][id!='card-cvv'][id!='billing-first-name']"+
"[id!='billing-last-name'][id!='billing-company'][id!='billing-address1'][id!='billing-address2'][id!='billing-city']"+
"[id!='billing-state'][id!='billing-zip'][id!='billing-phone'][id!='billing-country'][id!='useShippingRadio'][id!='useBillingRadio']"+
"[id!='ppSelectedRadio'][name!='miscDS.shopperEmailAddress_ymixval'][name!='miscDS.shopperEmailAddress_ymixlabel']"+
"[name!='miscDS.shopperEmailAddress_secname'][name!='paymentSelectionDS.paymentSelection_ROW0_paymentPPSelected']").serializeArray();
formData.push({name: 'Subtotal', value: orderSubTotal});
formData.push({name: 'Total', value: orderTotal});
formData.push({name: 'Cart Size', value: numOfItems});
formData.push({name: 'Cart Contains', value: items});
formData.push({name: 'Item ID\'s', value: ids});
formData.push({name: 'Codes', value: codes});
formData.push({name: 'Quantities', value: qtys});
formData.push({name: 'Prices', value: price});
formData.push({name: 'Taxable', value: orderTax});
formData.push({name: 'Shipping', value: orderShipping});
formData.push({name: 'Applied Promotion ID\'s', value: appliedPromoIdList});
formData.push({name: 'Coupons', value: coupon});
formData.push({name: 'Store ID', value: storeId});
formData.push({name: 'Shipping Promotion\'s', value: activeShipPromotionCount});
formData.push({name: 'Item Images', value: itemImages});
formData.push({name: 'Date and Time', value: date});
$.post("jquery/process.php", formData);
});
});
最后,这是表单本身(我已经删除了表单中被 ajax 帖子排除或根本没有被拉出的部分):
<!DOCTYPE html>
<html>
<head>
<title>the title</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="jquery/script.js"></script>
</head>
<body>
<div id="stage1" style="background-color:blue;">
STAGE - 1
</div>
<form id="testform">
<div id="ys_buyerInfo" class="">
<div id="ys_shipBillShippingInfo" class="ys_majorSection">
<h3>Shipping Information</h3>
<h4>Shipping Address</h4>
<div class="ys_subSection" id="ys_shippingAddress" style="">
<fieldset>
<label for="shipping-first-name" id="labelshipping-first-name" class="text"> <strong>First Name:</strong>
<input type="text" class="text" name="shippingAddressDS.shipping_ROW0_first_name" id="shipping-first-name" size="31" maxlength="99" value="" />
</label>
<label for="shipping-last-name" id="labelshipping-last-name" class="text"> <strong>Last Name:</strong>
<input type="text" class="text" name="shippingAddressDS.shipping_ROW0_last_name" id="shipping-last-name" size="31" maxlength="99" value="" />
</label>
<label for="shipping-company" id="labelshipping-company" class="text"> <strong>Company:</strong>
<input type="text" class="text" name="shippingAddressDS.shipping_ROW0_company" id="shipping-company" size="31" maxlength="99" value="" />
</label>
<label for="shipping-address1" id="labelshipping-address1" class="text"> <strong>Street Address 1:</strong>
<input type="text" class="text" name="shippingAddressDS.shipping_ROW0_address1" id="shipping-address1" size="31" maxlength="99" value="" />
</label>
<label for="shipping-address2" id="labelshipping-address2" class="text"> <strong>Street Address 2:</strong> </label>
<label for="shipping-city" id="labelshipping-city" class="text"> <strong>City:</strong>
<input type="text" class="text" name="shippingAddressDS.shipping_ROW0_city" id="shipping-city" size="10" maxlength="99" value="" />
</label>
<label for="shipping-state" id="labelshipping-state" class="text"> <strong>State:</strong>
<input type="text" class="text" name="shippingAddressDS.shipping_ROW0_state" id="shipping-state" size="13" maxlength="99" value="" />
</label>
<label for="shipping-zip" id="labelshipping-zip" class="text"> <strong>Zip Code:</strong>
<input type="text" class="text" name="shippingAddressDS.shipping_ROW0_zip" id="shipping-zip" size="10" maxlength="99" value="" />
</label>
<label for="shipping-phone" id="labelshipping-phone" class="text"> <strong>Phone:</strong>
<input type="text" class="text" name="shippingAddressDS.shipping_ROW0_phone" id="shipping-phone" size="10" maxlength="99" value="" />
</label>
<label for="shipping-country" id="labelshipping-country"> <strong>Country:</strong>
<select name="shippingAddressDS.shipping_ROW0_country" id="shipping-country" >
<option value="AR">Argentina</option>
<option value="AU">Australia</option>
<option value="AT">Austria</option>
<option value="BE">Belgium</option>
<option value="BM">Bermuda</option>
<option value="BA">Bosnia and Herzegowina</option>
<option value="BR">Brazil</option>
<option value="BG">Bulgaria</option>
<option value="CA">Canada</option>
<option value="HR">Croatia (Hrvatska)</option>
<option value="CY">Cyprus</option>
<option value="CZ">Czech Republic</option>
<option value="DK">Denmark</option>
<option value="EE">Estonia</option>
<option value="FO">Faroe Islands</option>
<option value="FI">Finland</option>
<option value="FR">France</option>
<option value="FX">France, Metropolitan</option>
<option value="DE">Germany</option>
<option value="GI">Gibraltar</option>
<option value="GR">Greece</option>
<option value="GL">Greenland</option>
<option value="HK">Hong Kong</option>
<option value="HU">Hungary</option>
<option value="IS">Iceland</option>
<option value="IE">Ireland</option>
<option value="IT">Italy</option>
<option value="JP">Japan</option>
<option value="KZ">Kazakhstan</option>
<option value="KR">Korea, Republic of</option>
<option value="KG">Kyrgyzstan</option>
<option value="LV">Latvia</option>
<option value="LI">Liechtenstein</option>
<option value="LT">Lithuania</option>
<option value="LU">Luxembourg</option>
<option value="MK">Macedonia</option>
<option value="MT">Malta</option>
<option value="MX">Mexico</option>
<option value="NL">Netherlands</option>
<option value="NZ">New Zealand</option>
<option value="NO">Norway</option>
<option value="PL">Poland</option>
<option value="PT">Portugal</option>
<option value="SG">Singapore</option>
<option value="SK">Slovakia (Slovak Republic)</option>
<option value="SI">Slovenia</option>
<option value="ZA">South Africa</option>
<option value="ES">Spain</option>
<option value="SE">Sweden</option>
<option value="CH">Switzerland</option>
<option value="TW">Taiwan</option>
<option value="TJ">Tajikistan</option>
<option value="UK">United Kingdom</option>
<option value="US" selected="selected">United States</option>
<option value="VA">Vatican City</option>
</select> </label>
</fieldset>
</div>
</div>
</div>
<div class="ys_majorSection">
<h3>Other Information</h3>
<h4>Coupon Code</h4>
<div class="ys_subSection" id="ys_coupon" style="">
<div class="ys_subSection">
<fieldset id="ys_couponFieldset">
<label for="gc-redemption-code" id="labelgc-redemption-code"> <strong>If you have a Coupon / Promotional code that can be redeemed from this store, please enter the offer code in the box below.</strong> </label>
<input type="text" class="text" name="gcPaymentDS.gcpayment_ROW0_redemptionCode" id="gc-redemption-code" size="20" maxlength="" value="" />
<input class="ys_secondary" type="submit" name="eventName.updateGiftCertDataEvent" value="Apply" />
<em><!-- intentionally empty --></em>
</fieldset>
</div>
</div>
<h4>Email Notification</h4>
<div class="ys_subSection" id="ys_billingEmail" style="">
<fieldset>
<label for="billing-email" id="labelbilling-email" class="text">
<strong>Email Address:</strong>
<input type="text" class="text" name="miscDS.shopperEmailAddress" id="billing-email" size="40" maxlength="99" value="" />
<input type="hidden" name="miscDS.shopperEmailAddress_ymixval" value="req,email" />
<input type="hidden" name="miscDS.shopperEmailAddress_ymixlabel" value="Email Address" />
<input type="hidden" name="miscDS.shopperEmailAddress_secname" value="BillingEmail" />
<em><!-- intentionally empty --></em> </label>
</fieldset>
</div>
</div>
<input type="button" id="driver" value="Load Data" />
</form>
</body>
</html>
最佳答案
看着上面的代码,我不得不承认我在 PHP 文件之后停了下来。简单的回答是 preg_replace 需要 3 个参数而不是 2 个才能工作。第一个参数是您要查找的模式,第二个参数是替换,最后一个参数是文本。
如果您希望改进整体代码,这里有一些建议:
首先,检查 $_POST 不是最好的选择,您应该检查
$_SERVER["REQUEST_METHOD"]=="POST"
然后请验证您的输入,我必须承认我从未使用过 $_fields 变量,但如果它预先填充了 $_POST 数组内的元素,您应该考虑到其中可以包含任何内容,而不仅仅是您期望的内容你的表单(其他人可以使用curl来破解该代码并在数据库中添加任何内容)。
您还应该在输入中结合使用 stripslashes 和 addslashes 来提供最低级别的安全性。冒号不是你唯一的问题,那里还可能有其他东西,一些你不想要的东西。
最后你可以使用 str_replace("要替换的字符串","替换","需要替换字符串的某些文本")
希望这有帮助
关于javascript - SQL 查询 - 替换字段名称中的句点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20152719/
我有三张 table 。表 A 有选项名称(即颜色、尺寸)。表 B 有选项值名称(即蓝色、红色、黑色等)。表C通过将选项名称id和选项名称值id放在一起来建立关系。 我的查询需要显示值和选项的名称,而
在mysql中,如何计算一行中的非空单元格?我只想计算某些列之间的单元格,比如第 3-10 列之间的单元格。不是所有的列...同样,仅在该行中。 最佳答案 如果你想这样做,只能在 sql 中使用名称而
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 7 年前。 Improve this ques
我正在为版本7.6进行Elasticsearch查询 我的查询是这样的: { "query": { "bool": { "should": [ {
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 7 年前。 Improve this ques
是否可以编写一个查询来检查任一子查询(而不是一个子查询)是否正确? SELECT * FROM employees e WHERE NOT EXISTS (
我找到了很多关于我的问题的答案,但问题没有解决 我有表格,有数据,例如: Data 1 Data 2 Data 3
以下查询返回错误: 查询: SELECT Id, FirstName, LastName, OwnerId, PersonEmail FROM Account WHERE lower(PersonEm
以下查询返回错误: 查询: SELECT Id, FirstName, LastName, OwnerId, PersonEmail FROM Account WHERE lower(PersonEm
我从 EditText 中获取了 String 值。以及提交查询的按钮。 String sql=editQuery.getText().toString();// SELECT * FROM empl
我有一个或多或少有效的查询(关于结果),但处理大约需要 45 秒。这对于在 GUI 中呈现数据来说肯定太长了。 所以我的需求是找到一个更快/更高效的查询(几毫秒左右会很好)我的数据表大约有 3000
这是我第一次使用 Stack Overflow,所以我希望我以正确的方式提出这个问题。 我有 2 个 SQL 查询,我正在尝试比较和识别缺失值,尽管我无法将 NULL 字段添加到第二个查询中以识别缺失
什么是动态 SQL 查询?何时需要使用动态 SQL 查询?我使用的是 SQL Server 2005。 最佳答案 这里有几篇文章: Introduction to Dynamic SQL Dynami
include "mysql.php"; $query= "SELECT ID,name,displayname,established,summary,searchlink,im
我有一个查询要“转换”为 mysql。这是查询: select top 5 * from (select id, firstName, lastName, sum(fileSize) as To
通过我的研究,我发现至少从 EF 4.1 开始,EF 查询上的 .ToString() 方法将返回要运行的 SQL。事实上,这对我来说非常有用,使用 Entity Framework 5 和 6。 但
我在构造查询来执行以下操作时遇到问题: 按activity_type_id过滤联系人,仅显示最近事件具有所需activity_type_id或为NULL(无事件)的联系人 表格结构如下: 一个联系人可
如何让我输入数据库的信息在输入数据 5 分钟后自行更新? 假设我有一张 table : +--+--+-----+ |id|ip|count| +--+--+-----+ |
我正在尝试搜索正好是 4 位数字的 ID,我知道我需要使用 LENGTH() 字符串函数,但找不到如何使用它的示例。我正在尝试以下(和其他变体)但它们不起作用。 SELECT max(car_id)
我有一个在 mysql 上运行良好的 sql 查询(查询 + 连接): select sum(pa.price) from user u , purchase pu , pack pa where (
我是一名优秀的程序员,十分优秀!