以下のプログラムを実行して、データをDBに追加したいのですが、Couldn't Excute Query、クエリーが実行できませんといわれます。
なぜでしょうか?
php
1<?php 2/* Program name: checkBlankOnly_2.php 3 * Description: Program displays the blank form and checks 4 * all the form fields for blank fields. 5 */ 6ini_set("display_errors","on"); 7error_reporting(E_ALL | E_STRICT); 8ini_set("include_path","./includes"); 9include("dbinfo.inc"); 10 11 12 13if(isset($_POST['submitted']) and $_POST['submitted'] == "yes") 14{ 15 foreach($_POST as $field => $value) 16 { 17 if(empty($value)) 18 { 19 if($field != "middle_name") 20 { 21 $blank_data[] = $field; 22 } 23 } 24 else 25 { 26 $good_data[$field] = strip_tags(trim($value)); 27 } 28 } 29 if(@sizeof($blank_data) > 0) 30 { 31 $message = "<p style='color: red; margin-bottom: 0; 32 font-weight: bold'> 33 You didn't fill in one or more required fields. 34 You must enter: 35 <ul style='color: red; margin-top: 0; 36 list-style: none' >"; 37 /* display list of missing information */ 38 foreach($blank_data as $value) 39 { 40 $message .= "<li>$value</li>"; 41 } 42 $message .= "</ul>"; 43 echo $message; 44 extract($good_data); 45 include("form_test3.inc"); 46 exit(); 47 } 48 foreach($_POST as $field => $value) 49 { 50 if(!empty($value)) 51 { 52 $name_patt = "/^[A-Za-z' -]{1,50}$/"; 53 $phone_patt = "/^[0-9)(xX -]{7,20}$/"; 54 $radio_patt = "/(new|changed)/"; 55 if(preg_match("/name/i",$field)) 56 { 57 if(!preg_match($name_patt,$value)) 58 { 59 $error_array[] = "$value is not a valid name"; 60 } 61 } 62 if(preg_match("/phone/i",$field)) 63 { 64 if(!preg_match($phone_patt,$value)) 65 { 66 $error_array[] = "$value is not a valid phone number"; 67 } 68 } // endif phone format check 69 if(preg_match("/status/i",$field)) 70 { 71 if(!preg_match($radio_patt,$value)) 72 { 73 $error_array[] = "$value is not a valid status"; 74 } 75 } 76 } 77 $clean_data = NULL; 78 $sql = "INSERT INTO CustomerPhone (last_name,first_name,middle_name,phone) 79 VALUES ('$clean_data[last_name]','$clean_data[first_name]', 80 '$clean_data[middle_name]','$clean_data[phone]')"; 81 } 82 if(@sizeof($error_array) > 0) 83 { 84 $message = "<ul style='color: red; list-style: none' >"; 85 foreach($error_array as $value) 86 { 87 $message .= "<li>$value</li>"; 88 } 89 $message .= "</ul>"; 90 echo $message; 91 extract($clean_data); 92 include("form_test3.inc"); 93 exit(); 94 } 95 else 96 { 97 $cxn = mysqli_connect($host,$user,$passwd,$dbname) 98 or die("Couldn't connect to server"); 99foreach((array)$clean_data as $field => $value) 100{ 101 $clean_data[$field] = mysqli_real_escape_string($cxn,$value); 102} 103$sql = "INSERT INTO CustomerPhone (last_name,first_name,middle_name,phone) 104 VALUES ('$clean_data[last_name]','$clean_data[first_name]', 105 '$clean_data[middle_name]','$clean_data[phone]')"; 106$result = mysqli_query($cxn,$sql) 107 or die("Couldn't execute query"); 108include("stored.inc"); 109 } 110} 111else 112{ 113 include("form_test3.inc"); 114} 115?>
私は、この部分↓
php
1$sql = "INSERT INTO CustomerPhone (last_name,first_name,middle_name,phone) 2 VALUES ('$clean_data[last_name]','$clean_data[first_name]', 3 '$clean_data[middle_name]','$clean_data[phone]')";
の鍵括弧がいけないんじゃないかなと思ってるんです。なぜなら、DBから直接SQL構文を使ってデータを入れる時は鍵括弧ではデータは入らず、ダブルコーテーションなら入るからです。でもこのプログラム上でダブルコーテーションにすると構文エラーになります。
構文自体が間違ってるとは思うし、なぜこの構文が2回出てくるのかもよくわかってません。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/01 15:22