在使用includes修改错误之后,我现在尝试使这个脚本写入数据库,但在提交表单后,页面变为空白(显然),但没有数据写入数据库。没有错误,也没有firebug或nginx日志。我还测试了“php -l”来查找类型错误,但sintax在所有文件中都是正确的。如何进一步调试PHP脚本?
<?php
require_once $_SERVER['DOCUMENT_ROOT'] . "/db.php";
if ($_POST['fSubmit'] == "Submit") {
$varName = $_POST['Name'];
$varSurname = $_POST['Surname'];
$varMail = $_POST['Mail'];
$varCountry = $_POST['Country'];
$varCity = $_POST['City'];
$varAddress = $_POST['Address'];
$varPO = $_POST['PO'];
$varPass = $_POST['Pass'];
$varCpass = $_POST['Cpass'];
try {
$DBH = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$DBH->exec("SET CHARACTER SET utf8");
$STH = "INSERT INTO 'users' ('name', 'password', 'email' )"
. "VALUES ('$varName', '$varPass', '$varMail')";
$count = $DBH->exec($sql);
$DBH = null; //disconnect
} catch (PDOException $e) {
echo $e->getMessage();
}
}
if($count !== false) echo 'Number of rows added: '. $count;
?>
修改
我现在在nginx日志上“尝试在第22行执行空查询”。
看起来查询语法有误,但是我已经检查了“php -l”并且消息是语法没问题,所以这里有什么问题?
编辑2
现在我遇到错误,但脚本仍未写入数据库。
HTML表格:
<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script type="text/javascript" src="http://cdn.jsdelivr.net/jquery.validation/1.13.1/jquery.validate.min.js"></script>
<script type="text/javascript" src="/jquery-ui.min.js"></script>
<script type="text/javascript" src="/jquery.select-to-autocomplete.js"></script>
<script type="text/javascript" src="/jsform.js"></script>
<link rel="stylesheet" type="text/css" href="/jquery-ui.css">
</head>
<body>
<div>
<form action="/form.php" method="post" id="register">
<div>
<input placeholder="Type your Name" type="text" name="Name" id="Name" maxlength="50">
</div>
<br>
<div>
<input placeholder="Type your Surname" type="text" name="Surname" id="Surname" maxlength="50">
</div>
<br>
<div>
<input placeholder="E-mail address" type="text" name="Mail" id="Mail" maxlength="50">
</div>
<br>
<div>
<input placeholder="Password" type="text" name="Pass" id="Pass" maxlength="50">
</div>
<br>
<div>
<input placeholder="Confirm Password" type="text" name="Cpass" id="Cpass" maxlength="50">
</div>
<br>
<div>
<select placeholder="Type your country" name="Country" id="Country" autofocus="autofocus" autocorrect="off" autocomplete="off">
<option value="" selected="selected">Select Country</option>
<option value="Afghanistan" data-alternative-spellings="AF">Afghanistan</option>
<option value="Åland Islands" data-alternative-spellings="AX Aaland Aland" data-relevancy-booster="0.5">Åland Islands</option>
<option value="Albania" data-alternative-
<option value="Luxembourg" data-alternative-spellings="LU">Luxembourg</option>
<option value="Macao" data-alternative-spellings="MO">Macao</option>
<option value="Macedonia, The Former Yugoslav Republic Of" data-alternative-spellings="MK">Macedonia, The Former Yugoslav Republic Of</option>
<option value="Madagascar" data-alternative-spellings="MG">Madagascar</option>
<option value="Malawi" data-alternative-spellings="MW">Malawi</option>
<option value="Malaysia" data-alternative-spellings="MY">Malaysia</option>
<option value="Maldives" data-alternative-spellings="MV">Maldives</option>
<option value="Mali" data-alternative-spellings="ML">Mali</option>
<option value="Malta" data-alternative-spellings="MT">Malta</option>
<option value="Marshall Islands" data-alternative-spellings="MH" data-relevancy-booster="0.5">Marshall Islands</option>
<option value="Martinique" data-alternative-spellings="MQ">Martinique</option>
<option value="Mauritania" data-alternative-spellings="MR">Mauritania</option>
<option value="Mauritius" data-alternative-spellings="MU">Mauritius</option>
<option value="Mayotte" data-alternative-spellings="YT">Mayotte</option>
<option value="Mexico" data-alternative-spellings="MX Mexicanos" data-relevancy-booster="1.5">Mexico</option>
<option value="Micronesia, Federated States of" data-alternative-spellings="FM">Micronesia, Federated States of</option>
<option value="Moldova, Republic of" data-alternative-spellings="MD">Moldova, Republic of</option>
<option value="Monaco" data-alternative-spellings="MC">Monaco</option>
<option value="Mongolia" data-alternative-spellings="MN">Mongolia</option>
<option value="Montenegro" data-alternative-spellings="ME">Montenegro</option>
<option value="Montserrat" data-alternative-spellings="MS" data-relevancy-booster="0.5">Montserrat</option>
<option value="Morocco" data-alternative-spellings="MA">Morocco</option>
<option value="Mozambique" data-alternative-spellings="MZ">Mozambique</option>
<option value="Myanmar" data-alternative-spellings="MM">Myanmar</option>
<option value="Namibia" data-alternative-spellings="NA">Namibia</option>
<option value="Nauru" data-alternative-spellings="NR" data-relevancy-booster="0.5">Nauru</option>
<option value="Nepal" data-alternative-spellings="NP">Nepal</option>
<option value="Netherlands" data-alternative-spellings="NL Holland Nederland" data-relevancy-booster="1.5">Netherlands</option>
<option value="New Caledonia" data-alternative-spellings="NC" data-relevancy-booster="0.5">New Caledonia</option>
<option value="New Zealand" data-alternative-spellings="NZ">New Zealand</option>
<option value="Nicaragua" data-alternative-spellings="NI">Nicaragua</option>
<option value="Niger" data-alternative-spellings="NE">Niger</option>
<option value="Nigeria" data-alternative-spellings="NG" data-relevancy-booster="1.5">Nigeria</option>
<option value="Niue" data-alternative-spellings="NU" data-relevancy-booster="0.5">Niue</option>
<option value="Norfolk Island" data-alternative-spellings="NF" data-relevancy-booster="0.5">Norfolk Island</option>
<option value="Northern Mariana Islands" data-alternative-spellings="MP" data-relevancy-booster="0.5">Northern Mariana Islands</option>
<option value="Norway" data-alternative-spellings="NO Norge Noreg" data-relevancy-booster="1.5">Norway</option>
<option value="Oman" data-alternative-spellings="OM">Oman</option>
<option value="Pakistan" data-alternative-spellings="PK" data-relevancy-booster="2">Pakistan</option>
<option value="Palau" data-alternative-spellings="PW" data-relevancy-booster="0.5">Palau</option>
<option value="Palestinian Territory, Occupied" data-alternative-spellings="PS">Palestinian Territory, Occupied</option>
<option value="Panama" data-alternative-spellings="PA">Panama</option>
<option value="Papua New Guinea" data-alternative-spellings="PG">Papua New Guinea</option>
<option value="Paraguay" data-alternative-spellings="PY">Paraguay</option>
<option value="Peru" data-alternative-spellings="PE">Peru</option>
<option value="Philippines" data-alternative-spellings="PH" data-relevancy-booster="1.5">Philippines</option>
<option value="Pitcairn" data-alternative-spellings="PN" data-relevancy-booster="0.5">Pitcairn</option>
<option value="Poland" data-alternative-spellings="PL" data-relevancy-booster="1.25">Poland</option>
<option value="Portugal" data-alternative-spellings="PT" data-relevancy-booster="1.5">Portugal</option>
<option value="Puerto Rico" data-alternative-spellings="PR">Puerto Rico</option>
<option value="Qatar" data-alternative-spellings="QA">Qatar</option>
<option value="Réunion" data-alternative-spellings="RE Reunion">Réunion</option>
<option value="Romania" data-alternative-spellings="RO">Romania</option>
<option value="Russian Federation" data-alternative-spellings="RU Russia Rossiya" data-relevancy-booster="2.5">Russian Federation</option>
<option value="Rwanda" data-alternative-spellings="RW">Rwanda</option>
<option value="Saint Barthélemy" data-alternative-spellings="BL" data-relevancy-booster="0.5">Saint Barthélemy</option>
<option value="Saint Helena" data-alternative-spellings="SH" data-relevancy-booster="0.5">Saint Helena</option>
<option value="Saint Kitts and Nevis" data-alternative-spellings="KN" data-relevancy-booster="0.5">Saint Kitts and Nevis</option>
<option value="Saint Lucia" data-alternative-spellings="LC" data-relevancy-booster="0.5">Saint Lucia</option>
<option value="Saint Martin (French Part)" data-alternative-spellings="MF" data-relevancy-booster="0.5">Saint Martin (French Part)</option>
<option value="Saint Pierre and Miquelon" data-alternative-spellings="PM" data-relevancy-booster="0.5">Saint Pierre and Miquelon</option>
<option value="Saint Vincent and the Grenadines" data-alternative-spellings="VC" data-relevancy-booster="0.5">Saint Vincent and the Grenadines</option>
<option value="Samoa" data-alternative-spellings="WS">Samoa</option>
<option value="San Marino" data-alternative-spellings="SM">San Marino</option>
<option value="Sao Tome and Principe" data-alternative-spellings="ST">Sao Tome and Principe</option>
<option value="Saudi Arabia" data-alternative-spellings="SA">Saudi Arabia</option>
<option value="Senegal" data-alternative-spellings="SN">Senegal</option>
<option value="Serbia" data-alternative-spellings="RS">Serbia</option>
<option value="Seychelles" data-alternative-spellings="SC" data-relevancy-booster="0.5">Seychelles</option>
<option value="Sierra Leone" data-alternative-spellings="SL">Sierra Leone</option>
<option value="Singapore" data-alternative-spellings="SG">Singapore</option>
<option value="Sint Maarten (Dutch Part)" data-alternative-spellings="SX">Sint Maarten (Dutch Part)</option>
<option value="Slovakia" data-alternative-spellings="SK">Slovakia</option>
<option value="Slovenia" data-alternative-spellings="SI">Slovenia</option>
<option value="Solomon Islands" data-alternative-spellings="SB">Solomon Islands</option>
<option value="Somalia" data-alternative-spellings="SO">Somalia</option>
<option value="South Africa" data-alternative-spellings="ZA">South Africa</option>
<option value="South Georgia and the South Sandwich Islands" data-alternative-spellings="GS">South Georgia and the South Sandwich Islands</option>
<option value="South Sudan" data-alternative-spellings="SS">South Sudan</option>
<option value="Spain" data-alternative-spellings="ES España" data-relevancy-booster="2">Spain</option>
<option value="Sri Lanka" data-alternative-spellings="LK">Sri Lanka</option>
<option value="Sudan" data-alternative-spellings="SD">Sudan</option>
<option value="Suriname" data-alternative-spellings="SR">Suriname</option>
<option value="Svalbard and Jan Mayen" data-alternative-spellings="SJ" data-relevancy-booster="0.5">Svalbard and Jan Mayen</option>
<option value="Swaziland" data-alternative-spellings="SZ">Swaziland</option>
<option value="Sweden" data-alternative-spellings="SE Sverige" data-relevancy-booster="1.5">Sweden</option>
<option value="Switzerland" data-alternative-spellings="CH Swiss Confederation Schweiz Suisse Svizzera Svizra" data-relevancy-booster="1.5">Switzerland</option>
<option value="Syrian Arab Republic" data-alternative-spellings="SY Syria">Syrian Arab Republic</option>
<option value="Taiwan, Province of China" data-alternative-spellings="TW">Taiwan, Province of China</option>
<option value="Tajikistan" data-alternative-spellings="TJ">Tajikistan</option>
<option value="Tanzania, United Republic of" data-alternative-spellings="TZ">Tanzania, United Republic of</option>
<option value="Thailand" data-alternative-spellings="TH">Thailand</option>
<option value="Timor-Leste" data-alternative-spellings="TL">Timor-Leste</option>
<option value="Togo" data-alternative-spellings="TG">Togo</option>
<option value="Tokelau" data-alternative-spellings="TK" data-relevancy-booster="0.5">Tokelau</option>
<option value="Tonga" data-alternative-spellings="TO">Tonga</option>
<option value="Trinidad and Tobago" data-alternative-spellings="TT">Trinidad and Tobago</option>
<option value="Tunisia" data-alternative-spellings="TN">Tunisia</option>
<option value="Turkey" data-alternative-spellings="TR Türkiye Turkiye">Turkey</option>
<option value="Turkmenistan" data-alternative-spellings="TM">Turkmenistan</option>
<option value="Turks and Caicos Islands" data-alternative-spellings="TC" data-relevancy-booster="0.5">Turks and Caicos Islands</option>
<option value="Tuvalu" data-alternative-spellings="TV" data-relevancy-booster="0.5">Tuvalu</option>
<option value="Uganda" data-alternative-spellings="UG">Uganda</option>
<option value="Ukraine" data-alternative-spellings="UA Ukrayina">Ukraine</option>
<option value="United Arab Emirates" data-alternative-spellings="AE UAE Emirates">United Arab Emirates</option>
<option value="United Kingdom" data-alternative-spellings="GB Great Britain England UK Wales Scotland Northern Ireland" data-relevancy-booster="2.5">United Kingdom</option>
<option value="United States" data-relevancy-booster="3.5" data-alternative-spellings="US USA United States of America">United States</option>
<option value="United States Minor Outlying Islands" data-alternative-spellings="UM">United States Minor Outlying Islands</option>
<option value="Uruguay" data-alternative-spellings="UY">Uruguay</option>
<option value="Uzbekistan" data-alternative-spellings="UZ">Uzbekistan</option>
<option value="Vanuatu" data-alternative-spellings="VU">Vanuatu</option>
<option value="Venezuela" data-alternative-spellings="VE">Venezuela</option>
<option value="Vietnam" data-alternative-spellings="VN" data-relevancy-booster="1.5">Vietnam</option>
<option value="Virgin Islands, British" data-alternative-spellings="VG" data-relevancy-booster="0.5">Virgin Islands, British</option>
<option value="Virgin Islands, U.S." data-alternative-spellings="VI" data-relevancy-booster="0.5">Virgin Islands, U.S.</option>
<option value="Wallis and Futuna" data-alternative-spellings="WF" data-relevancy-booster="0.5">Wallis and Futuna</option>
<option value="Western Sahara" data-alternative-spellings="EH">Western Sahara</option>
<option value="Yemen" data-alternative-spellings="YE">Yemen</option>
<option value="Zambia" data-alternative-spellings="ZM">Zambia</option>
<option value="Zimbabwe" data-alternative-spellings="ZW">Zimbabwe</option>
</select>
</div>
<br>
<div>
<input placeholder="City" type="text" name="City" id="City" maxlength="50">
</div>
<br>
<div>
<input placeholder="Complete Address" type="text" name="Address" id="Address" maxlength="50">
</div>
<br>
<div>
<input placeholder="P.O Box" type="text" name="PO" id="PO" maxlength="50">
</div>
<br>
<div>
<input type="submit" name="fSubmit" id="fSubmit" value="Submit">
</div>
</form>
</div>
</body>
</html>
db连接变量脚本
<?php
$servername = "localhost";
$username = "xxxxx";
$password = "xxxxxxx";
$dbname = "mlp";
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
?>
答案 0 :(得分:0)
你的主要问题:
您声明了$STH
而不是$sql
。
解决此问题:
$STH = ...
更改为$sql = ...
OR
$count = $DBH->exec($sql);
更改为$count = $DBH->exec($STH);
我推荐第一个。
此外,您应该考虑使用prepared statements来阻止SQL注入。
另外:
$STH = "INSERT INTO 'users' ('name', 'password', 'email' )"
. "VALUES ('$varName', '$varPass', '$varMail')";
这导致:
INSERT INTO 'users' ('name', 'password', 'email' )VALUES ('$varName', '$varPass', '$varMail')
还有其他一些问题:
)
和VALUES
修复:(已编辑)
$sql = "INSERT INTO users (name, password, email) VALUES ('$varName', '$varPass', '$varMail')";