私は間違っていますか?私は初心者で、私のコードはmysqlデータベースから都市を引っ張っていません。私のPHPスクリプトがmysqlデータベースから都市を取得しない理由
function getXMLHTTP() { //fuction to return the xml http object
var xmlhttp=false;
try{
xmlhttp=new XMLHttpRequest();
}
catch(e) {
try{
xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e){
try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e1){
xmlhttp=false;
}
}
}
return xmlhttp;
}
function getCity(state) {
var strURL="get_city.php?state="+state;
var req = getXMLHTTP();
if (req) {
req.onreadystatechange = function() {
if (req.readyState == 4 && req.status==200) {
document.getElementById("citydiv").innerHTML=req.responseText;
}
}
req.open("GET","get_city.php?state="+stateL,true);
req.send(null);
}
}
<div class="row">
<span class="small-6 columns" style="inline">
<label>Location</label>
<select name="state" method="GET" id="state" onChange="getCity(this.value)">
<option value="0">Select State</option>
<option value=1>Alabama</option>
<option value=2>Alaska</option>
<option value="3">Arizona</option>
<option value=AR>Arkansas</option>
<option value=CA>California</option>
<option value="CO">Colorado</option>
<option value="CT">Connecticut</option>
<option value="DE">Delaware</option>
<option value="DC">District of Columbia</option>
<option value="FL">Florida</option>
<option value="GA">Georgia</option>
<option value="HI">Hawaii</option>
<option value="ID">Idaho</option>
<option value="IL">Illinois</option>
<option value="IN">Indiana</option>
<option value="IA">Iowa</option>
<option value="KS">Kansas</option>
<option value="KY">Kentucky</option>
<option value="LA">Louisiana</option>
<option value="ME">Maine</option>
<option value="MD">Maryland</option>
<option value="MA">Massachusetts</option>
<option value="MI">Michigan</option>
<option value="MN">Minnesota</option>
<option value="MS">Mississippi</option>
<option value="MO">Missouri</option>
<option value="MT">Montana</option>
<option value="NE">Nebraska</option>
<option value="NV">Nevada</option>
<option value="NH">New Hampshire</option>
<option value="NJ">New Jersey</option>
<option value="NM">New Mexico</option>
<option value="NY">New York</option>
<option value="NC">North Carolina</option>
<option value="ND">North Dakota</option>
<option value="OH">Ohio</option>
<option value="OK">Oklahoma</option>
<option value="OR">Oregon</option>
<option value="PA">Pennsylvania</option>
<option value="RI">Rhode Island</option>
<option value="SC">South Carolina</option>
<option value="SD">South Dakota</option>
<option value="TN">Tennessee</option>
<option value="TX">Texas</option>
<option value="UT">Utah</option>
<option value="VT">Vermont</option>
<option value="VA">Virginia</option>
<option value="WA">Washington</option>
<option value="WV">West Virginia</option>
<option value="WI">Wisconsin</option>
<option value="WY">Wyoming</option>
</select></span>
<span class="small-6 columns" style="inline">
<select name="city" id="citydiv" >
<option value="">Select City</option>
</select></span>
</div>
私のPHPファイルget_city:
<?php
$state_selected=strval($_GET['state']);
echo $state_selected;
$link=mysqli_connect("127.0.0.1","root","cw","locations");
if(mysqli_connect_errno()) {
printf("connect failed: %s\n",mysqli_connect_error());
exit();
}
$query="select city from cities where state_code= '".$state_selected."'";
$rs=mysqli_query($link,$query);
?>
<select name="city" id="citydiv" onchange="populate_utility_menu(this.value)">
<?php
while($row=mysqli_fetch_array($rs)) {
echo "<option value=>".$row['city'];
echo "</option>";
}
?>
</select>
私は私のオプション値の一部を実現するには異なっている、私は合格したいが、それが問題だった場合、私はちょうどチェックしていた2つの文字の文字列。私はさらに、Googleインスペクタと、下にあるapache2のerror.logファイル以外に何が起こっているのかをさらに調べる方法がわかりません。おそらくphpがmysqlファイルをロードしていないようですが、それを正しいパスに変換します。助けてください、私はこれで非常に新しいことを覚えておいてください。
のapache2のerror.logに
PHPの警告:PHPのスタートアップ:動的ライブラリをロードできません '/usr/lib/php5/20121212/msql.so' - は/ usr/libに/ PHP5/20121212/mSQLの.so:共有オブジェクトファイルを開くことができません:0行目の不明なファイルまたはディレクトリはありません。
[Tue Jun 14 17:48:47.600742 2016] [mpm_prefork:notice] [pid 13981] AH00163:Apache/2.4.7 (Ubuntu)PHP/5.5.9-1ubuntu4.14設定 - 通常の操作を再開
[Tue Jun 14 17:48:47.600928 2016] [core:notice] [pid 13981] AH00094:Comm 「/ usr/sbin/apache2」
ライブラリがありません。 – user2182349
あなたは、そのクエリが動作するときにSQLインジェクションを開いています。パラメータ化されたクエリを使用します。生成する 'option'も無効になり、' value'もありません。 – chris85
私は自分のデータベースの状態コードの2文字列を生成しようとしていました。私のオプション値が間違っている理由を詳しく教えてください。そして、SQLインジェクションによって、悪意のある入力でフォームを完成させてデータベースを壊すことができるということですか?これを防ぐには、入力認証を追加するだけです(これは他のものが動作した後の私の次のステップでした)。 – user3499087