以前質問をさせて頂きましたが、現状もわかっていない状況です。
Fatal error: Call to undefined method MDB2_Error::execute()register_check.php on line 39

ご指摘があったDNS→DSNに変更しましたが変わらない状況です。

function.php
<?php
define("DNS","mysql://root@localhost/mihon?charset=utf8");
define("SERVER", "127.0.0.1");
define("SENDER_EMAIL", "root@localhost");
define("STRETCH_COUNT", 1000);



register_check.php
//DB接続
$db = MDB2::connect(DNS);
if (PEAR::isError($db)) {
die($db->getMessage());
}
//プレースホルダで SQL 作成
$sql = "SELECT COUNT(*) AS CNT FROM USERS WHERE ID = ? ;";
//var_dump($sql);
//パラメーターの型を指定
$stmt = $db->prepare($sql, array('text'));
//パラメーターを渡して SQL 実行
$rs = $stmt->execute(array($id));   ←ココがエラー
//var_dump($rs);
while ($row = $rs->fetchRow(MDB2_FETCHMODE_ASSOC)) {
$count = $row['cnt'];
}
$db->disconnect()
?>

var_dumpで確認すると以下の文が出てきます
object(MDB2_Error)[3]
public 'error_message_prefix' => string '' (length=0)
public 'mode' => int 1
public 'level' => int 1024
public 'code' => int -18
public 'message' => string 'MDB2 Error: no such table' (length=25)
public 'userinfo' => string '_doQuery: [Error message: Could not execute statement]
[Last executed query: PREPARE MDB2_STATEMENT_mysql_b347dce676c5b552469498333641d692 FROM 'SELECT COUNT(*) AS CNT FROM USERS WHERE ID = ? ;']
[Native code: 1146]
[Native message: Table 'mihon.users' doesn't exist]

参考サイトは以下です。このサイトを見て作成しています。
http://www.websec-room.com/2015/03/15/2153

データベース名はmihonに変更しています。
どうぞよろしくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

>[Native message: Unknown column 'RESISTER_TIME' in 'field list']


テーブルのレコード「RESISTER_TIME」(一番最後のカラム)が見つからないと出ています。レコードを確認してみてください。
    • good
    • 0
この回答へのお礼

register_timeと記載しており、初歩的なミスでした。
助かりました。ありがとうございます。

お礼日時:2016/01/23 23:02

>[Native message: Table 'mihon.users' doesn't exist]


テーブル'mihon.users'が存在しない。
と出ています。
「テーブル設計」にある、「USERS」テーブルはMySQLに作成されていますか?
    • good
    • 0
この回答へのお礼

確認したら、USERS→USERになっていました。ありがとうございます。
ただ、次のファイルでも同じエラーが出ていますが、ご教授お願いします。
Fatal error: Call to undefined method MDB2_Error::execute() in mihonlog\register_submit.php on line 51

var_dumpで詳細確認。
object(MDB2_Error)[3]
public 'error_message_prefix' => string '' (length=0)
public 'mode' => int 1
public 'level' => int 1024
public 'code' => int -19
public 'message' => string 'MDB2 Error: no such field' (length=25)
public 'userinfo' => string '_doQuery: [Error message: Could not execute statement]
[Last executed query: PREPARE MDB2_STATEMENT_mysql_8c6b372befe56978e11534d1ed0fffdf FROM 'INSERT INTO USERS (ID,SALT,PASSWORD,MAILADDRESS,TEMP_PASS,LAST_CHANGE_PASS_TIME,RESISTER_TIME) VALUES (?,?,?,?,?,?,?);']
[Native code: 1054]
[Native message: Unknown column 'RESISTER_TIME' in 'field list']

お礼日時:2016/01/23 12:26

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QDB Error: no such field

大変困っています。
よろしくお願いします。

XAMPPを使用しています。
PHP5です。

insertしようとしたら、
下記のようなエラーがでました。
DB Error: no such field

何が原因なのでしょうか。

実際のソースを載せた方がいいと思ったのですが、
どこを記載すればいいのかも迷っております。

Aベストアンサー

ID欄の名称が違うじゃ~ん。

テーブル定義は[customer_id]なのにInsert文は[contract_id]。

Qsyntax error, unexpected '}' というエラーの対処法

PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33
というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか?
・game.php
<html>
<head>
<title>数当てゲーム</title>
</head>
<body>
<h1 style="background:#cccccc">数当てゲーム</h1>
<form method="POST" action="game.php">
1~100までの数を入力してください
<input type="text" name="answer" size="5" maxlength="3" />
<input type="sbumit" value=回答" />
</form>
<hr />
<?php
session_start();
if(is_null($_SESSION['answer'])){
mt_stand(microtime()*1000000);
$_SESSION['answer']=mt_rand(1,100);
$_SESSION['game_cnt']=0;
}
if($_POST['answer']!=""){
$_SESSION['game_cnt']++;
if($_session['answer']==$_POST['answer']){
print("おめでとうございます".
$_SESSION['game_cnt']."回で正解しました!");
session_destroy();
}else{
if($_SESSION['answer']>$_POST['answer']){
print("もう少し大きいです。");
}else
print("もう少し小さいです。");
}
}
}
?>
</body>
</html>
それとこの間違えたところをなおしたあとはいつもコンピュータを再起動しないと修正したところが適用されないのですがほかに方法はないですか?基本的な質問ですいません。

PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33
というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか?
・game.php
<html>
<head>
<title>数当てゲーム</title>
</head>
<body>
<h1 style="background:#cccccc">数当てゲーム</h1>
<form method="POST" action="game.php">
1~100までの数を入力してください
<input type="text" name="answer" size="5" max...続きを読む

Aベストアンサー

print("もう少し大きいです。");
}else
print("もう少し小さいです。");
のelseの後に{がないようですが、大丈夫でしょうか?

Q宜しくお願いします。

宜しくお願いします。
mix~max値の間、発行したクエリーからの値を配列に入れたいのですが、どうもFor文中にmin,max値は届いているのですが,$resultに値が入りません。
エラーからしてSQLで行っている変数処理に$iの値が届いてない感じがするのですが、下記のソースを見て頂いて、疑わしき点などご指摘、ご教授いただけませんでしょうか。

どうぞ宜しくお願いします。


--エラー文ここから--->
Catchable fatal error: Object of class stdClass could not be converted to string in ...




--ソースここから--->

$min = h($r -> x);
$max = h($s -> y);
for($i=$min ; $i<= $max; $i++){
$search = sprintf("SELECT id FROM Sheet WHERE no='%d'",$i);
$q_search = mysql_query($search);
$result = mysql_fetch_object($q_search);
echo $result;
}

宜しくお願いします。
mix~max値の間、発行したクエリーからの値を配列に入れたいのですが、どうもFor文中にmin,max値は届いているのですが,$resultに値が入りません。
エラーからしてSQLで行っている変数処理に$iの値が届いてない感じがするのですが、下記のソースを見て頂いて、疑わしき点などご指摘、ご教授いただけませんでしょうか。

どうぞ宜しくお願いします。


--エラー文ここから--->
Catchable fatal error: Object of class stdClass could not be converted to string in ...




--ソースここから...続きを読む

Aベストアンサー

PHPあまり詳しくないので間違っていたらすいません。


>$result = mysql_fetch_object($q_search);
でresultはobject型で代入しておりそれを表示するときにString型に変換できていないのが原因かとおもわれます。

参考URL
mysql-query
http://php.net/manual/ja/function.mysql-query.php

mysql-fetch-array
http://php.net/manual/ja/function.mysql-fetch-array.php

mysql_fetch_object
http://phpspot.net/php/man/php/function.mysql-fetch-object.html

Qphp pear mdb2に質問です。

php pear mdb2に質問です。

以下の関数でエラーが出ます。

間違っているところがあれば、回答お願いします。

function product_info($id) {
global $db;
$res = $db->query("SELECT * FROM product WHERE id=?",
array($id));

if ($res != null) {
$row = $res->fetchrow(MDB2_FETCHMODE_ASSOC);
return $row;
}
return null;
}

Aベストアンサー

具体的なエラー内容を教えてください。そうでないと判断のしようがありません。
とりあえず考えられる原因としては、DBはちゃんとオープンできていますか?
---ここから---
$db =& MDB2::connect("…");
if( MDB2::isError($db) ) {
print "connect error: ".$db->getMessage();
}
---ここまで---
といった感じで、$dbを代入してる所でエラーチェックしてみてください。

それと、queryの結果は、エラー時にはエラーであるという情報が入ってますので、nullとの比較ではエラー判定できません。
原因究明のため、「if ($res != null)」の部分は、以下のようにエラー内容を表示させるようにしてみてください。

---ここから---
if (MDB2::isError($res)) {
print "query error: ".$res->getMessage();
} else {
return $row;
}
---ここまで--

これで、具体的にどういうエラーが出るのか教えていただければ、状況は判断しやすくなるかと思います。

具体的なエラー内容を教えてください。そうでないと判断のしようがありません。
とりあえず考えられる原因としては、DBはちゃんとオープンできていますか?
---ここから---
$db =& MDB2::connect("…");
if( MDB2::isError($db) ) {
print "connect error: ".$db->getMessage();
}
---ここまで---
といった感じで、$dbを代入してる所でエラーチェックしてみてください。

それと、queryの結果は、エラー時にはエラーであるという情報が入ってますので、nullとの比較ではエラー判定できません。
原因究明のため、「if...続きを読む

QphpのPEARのMDB2を使って出たエラー 教えて下さい

Fatal error: Call to undefined method MDB2_Error::execute()
エラーが発生しております。解決が出来ず半日が経ち、困っております。
どなたかご教授願います。内容は会員登録確認画面から(データベース登録)会員確定画面の際にうまく機能していません。よろしくお願いします。
tourokucheck.php

//DB接続
$db = MDB2::connect(DNS);
if (PEAR::isError($db)) {
die($db->getMessage());
}
//プレースホルダで SQL 作成
$sql = "SELECT COUNT(*) AS CNT FROM USERS WHERE ID = ? ;";
//var_dump($sql);
//パラメーターの型を指定
$stmt = $db->prepare($sql, array('text'));
//パラメーターを渡して SQL 実行
$rs = $stmt->execute(array($id));
//var_dump($rs);
while ($row = $rs->fetchRow(MDB2_FETCHMODE_ASSOC)) {
$count = $row['cnt'];
}
$db->disconnect()
?>

touroku_submit.php
<?php
require_once 'MDB2.php';
require_once("function.php");
session_start();
header("Content-type: text/html; charset=utf-8");


//CSRF チェック
if ($_SESSION['token'] != $_POST['token']) {
$_SESSION = array();
session_destroy();
session_start();

$_SESSION["error_status"] = 2;
header("HTTP/1.1 301 Moved Permanently");
header("Location: login.php");
exit();
}

//エラー情報のリセット
$_SESSION["error_status"] = 0;

$name = $_POST['full_name'];
$name_kana = $_POST['furigana'];
$birthday = ($_POST['birthday']);
$postcode = ($_POST['postcode']);
$address = ($_POST['address']);
$mail = $_POST['mail'];
$telephone = $_POST['telephone'];
$password = $_POST["password1"];

$salt = get_salt();

$url_pass = get_url_password();

$hash = strechedPassword($salt, $password);

//DB接続
$db = MDB2::connect(DNS);
if (PEAR::isError($db)) {
die($db->getMessage());
}

//プレースホルダで SQL 作成
$sql = "INSERT INTO USERS (name,name_kana,birth,postcode,address,MAILADDRESS,telephone,PASSWORDSALT,TEMP_PASS,LAST_CHANGE_PASS_TIME,RESISTER_TIME) ";
var_dump($sql);
$sql .= " VALUES (?,?,?,?,?,?,?,?,?,?,?);";
//パラメーターの型を指定
$stmt = $db->prepare($sql, array('text','text','text','text','text','text','text','text','text','timestamp','timestamp'));
//パラメーターを渡して SQL 実行
echo 'name:';
$res = $stmt->execute($name,$name_kana,$birth,$postcode,$address,$mail,$telephone,$password,$salt,$hash,$url_pass,date('Y-m-d H:i:s'),date('Y-m-d H:i:s'));
//var_dump($res);
//ID重複の可能性があるのでチェック
if (PEAR::isError($res)) {
$db->disconnect();

$_SESSION["error_status"] = 4;
header("HTTP/1.1 301 Moved Permanently");
header("Location: register.php");
exit();
}

$db->disconnect();

//ユーザーにメールの送信

//メールヘッダーインジェクション対策
$mail = str_replace(array("\r\n","\r","\n"), "", $mail);

$url = "https://" . SERVER . "/register_confirm.php?" . $url_pass;

$msg = "以下のアドレスからアカウトを有効にしてください。" . PHP_EOL;
$msg .= "アドレスの有効時間は10分間です。" . PHP_EOL;
$msg .= "有効時間後はパスワードのリセットを行ってください。" . PHP_EOL . PHP_EOL;
$msg .= $url;
mb_language("ja");
mb_internal_encoding("UTF-8");
mb_send_mail($mail, "ユーザー登録", $msg, " From: " . SENDER_EMAIL);

?>

Fatal error: Call to undefined method MDB2_Error::execute()
エラーが発生しております。解決が出来ず半日が経ち、困っております。
どなたかご教授願います。内容は会員登録確認画面から(データベース登録)会員確定画面の際にうまく機能していません。よろしくお願いします。
tourokucheck.php

//DB接続
$db = MDB2::connect(DNS);
if (PEAR::isError($db)) {
die($db->getMessage());
}
//プレースホルダで SQL 作成
$sql = "SELECT COUNT(*) AS CNT FROM USERS WHERE ID = ?...続きを読む

Aベストアンサー

execute()でエラーが出てるようでしたら、$res = $stmt->execute(・・・ 以降にある
if (PEAR::isError($res)) {} 内で以下をecho出力して何かヒントとなる情報は出てきませんか?

$res->getMessage();
$res->getDebugInfo();

QInner join と Left joinの明確な違いは?

Inner join と Left joinの違いがよくわかりません。
教えてください。

Aベストアンサー

出てくる結果が違います。

テーブル1のフィールド1に、






が、

テーブル2のフィールド1に、






が入力されている場合、

SELECT [テーブル1].[フィールド1], [テーブル2].[フィールド1]
FROM テーブル1 LEFT JOIN テーブル2 ON [テーブル1].[フィールド1]=[テーブル2].[フィールド1];
では、結果は、
テーブル1.フィールド1 テーブル2.フィールド1
1               1
2               2
3               3
4               NULL
5               NULL
6               NULL
の6レコードが出力されますが、

SELECT [テーブル1].[フィールド1], [テーブル2].[フィールド1]
FROM テーブル1 INNER JOIN テーブル2 ON [テーブル1].[フィールド1]=[テーブル2].[フィールド1];
では、結果は、
テーブル1.フィールド1 テーブル2.フィールド1
1               1
2               2
3               3
の3レコードしか出力されません。

出てくる結果が違います。

テーブル1のフィールド1に、






が、

テーブル2のフィールド1に、






が入力されている場合、

SELECT [テーブル1].[フィールド1], [テーブル2].[フィールド1]
FROM テーブル1 LEFT JOIN テーブル2 ON [テーブル1].[フィールド1]=[テーブル2].[フィールド1];
では、結果は、
テーブル1.フィールド1 テーブル2.フィールド1
1               1
2               2
3           ...続きを読む

QPHPでjavascriptのalert文のようにデバッグ

こんにちは

現在、Flash からPHPにデータを渡して、それがPHPにわたっているかどうかを調べたいのですが、echo文などで出力してもそれがブラウザで表示されないので、どうしたらよいかわかりません。。。orz

javascriptのalert文のように警告ウィンドウを利用して変数の値などを調べる関数はあるのでしょうか?
また、なにか他によい方法がありましたら教えていただけるとありがたいです。

よろしくお願いします

Aベストアンサー

var_dump(変数)

echo で値が出ないということは、おそらく値が null もしくは空文字だと思います。

参考URL:http://jp.php.net/manual/ja/function.var-dump.php

QMAX値を条件にデータを取得するには?

SQL文で困っています。
ご教授下さい。


下記のようなデータがあった場合、それぞれの区分毎に
年月が最大(最新)のデータを取得したいです。
(実際には1レコードにその他項目があり、それらも取得します。)
<検索対象データ>
区分 年月   金額
-----------------------------
A   200412  600
A   200503  560
B   200311  600
B   200508  1000
B   200504  560
C   200508  400
C   200301  1100


<取得したいデータ>

区分 年月   金額
-----------------------------
A   200503  560
B   200508  1000
C   200508  400

よろしくお願いします。

Aベストアンサー

テーブル名をXXXとすると次のようなSQLでよいと思います。(最善の方法かどうかは自信がないですが)

select B.* from (select 区分, max(年月) as 年月 from XXX group by 区分) As A
inner join XXX as B on A.区分 = B.区分 and A.年月 = B.年月
order by B.区分

QSmartyでインクリメント

Smartyで以下のような処理がしたいのですがうまくいきません・・・(横にセルを5コ並べた後に改行したい)
どのように記述したらよいか教えて頂けますでしょうか。

<table>
<tr>
{$i = 0}
{foreach item=item_list from=$item_list}
<td>{$item_list.hoge|escape}</td>
{$i = $i + 1}
{if $i mod 4 eq 0}
</tr><tr>
{/if}
{/foreach}
</table>

Aベストアンサー

Smartyでは、PHPのように $i = 0 のような書き方はできません。
変数に値を入れたいのであれば、{assign var=i value=$i+1}のようになります。

foreachの場合は、iterationがあるので、インクリメントをする必要は無く、
<table>
<tr>
{foreach item=item_list from=$item_list name=item_loop}
<td>{$item_list.hoge|escape}</td>
{if $smarty.foreach.item_loop.iteration % 5 ep 0}
{* 5つ目の値なら行を閉じて次の行を始める *}
</tr><tr>
{/if}
{/foreach}
</table>
のような書き方で動きます。
ただし、これではテーブルの構造をちゃんと作れない(最後の行を</tr>で閉じることができない)ので、少し変更する必要があると思います。

その辺を気になさらないのであれば、以下は無視してくださって結構です。
<table>
<tr>
{foreach item=item_list from=$item_list name=item_loop}
<td>{$item_list.hoge|escape}</td>
{if $smarty.foreach.item_loop.iteration % 5 ep 0}
{* その行で5つ目のデータなら</tr>を入れる *}
</tr>
{if not $smarty.foreach.item_loop.last}
{* それが最後のデータじゃなかったら次の行を始める *}
<tr>
{/if}
{/if}
{if $smarty.foreach.item_loop.last and $smarty.foreach.item_loop.total % 5 neq 0}
{* 最後のデータで、その行の5つ目じゃない(</tr>が入っていない)場合は</tr>を入れてあげる *}
{* ここに<td></td>を必要な数だけ入れた方がいいですが、なくてもそんなにおかしくはないです *}
</tr>
{/if}
{/foreach}
</table>

参考URL:http://sky.freespace.jp/smarty/SmartyManual_2-6-3J_html/language.function.foreach.html

Smartyでは、PHPのように $i = 0 のような書き方はできません。
変数に値を入れたいのであれば、{assign var=i value=$i+1}のようになります。

foreachの場合は、iterationがあるので、インクリメントをする必要は無く、
<table>
<tr>
{foreach item=item_list from=$item_list name=item_loop}
<td>{$item_list.hoge|escape}</td>
{if $smarty.foreach.item_loop.iteration % 5 ep 0}
{* 5つ目の値なら行を閉じて次の行を始める *}
</tr><tr>
{/if}
{/foreach}
</table>
のような書き方で動きます...続きを読む

Q.htaccessにphp_valueが使用できな

.htaccess: Invalid command 'php_value', perhaps misspelled or defined by a module not included in the server configuration, referer:
上記のエラーが表示されます。

.htaccessに記述している内容は以下の通りです。
php_value include_path '/var/www/vhosts/ドメイン'

php_value mbstring.language Japanese
php_flag mbstring.encoding_translation On
php_value mbstring.http_input auto
php_value mbstring.internal_encoding EUC-JP
php_value mbstring.script_encoding EUC-JP
php_value mbstring.substitute_character none

php_value を使用するにはどうすればよいでしょうか?
宜しくお願い居します。

.htaccess: Invalid command 'php_value', perhaps misspelled or defined by a module not included in the server configuration, referer:
上記のエラーが表示されます。

.htaccessに記述している内容は以下の通りです。
php_value include_path '/var/www/vhosts/ドメイン'

php_value mbstring.language Japanese
php_flag mbstring.encoding_translation On
php_value mbstring.http_input auto
php_value mbstring.internal_encoding EUC-JP
p...続きを読む

Aベストアンサー

httpd.confでmod_php5.cがロードされていない、つまりphpの動作がモジュールではないのでは?なので.htaccessでphp_value、php_flagが使えないのだと思いますが・・・

http://php.net/manual/ja/configuration.changes.php

php.iniは使えないのでしょうか?


人気Q&Aランキング

おすすめ情報