Home >Backend Development >PHP Tutorial >mysqli_stmt_bind_param不能处理时间类型吗?

mysqli_stmt_bind_param不能处理时间类型吗?

WBOY
WBOYOriginal
2016-06-23 13:49:501653browse

 报错的这条语句

mysqli_stmt_bind_param($stmt, 'idii', $c, $a, $t, $w);


完整代码
<?phprequire ('inc/config.php');$page_title = '住宅数据添加-feige数据中心';include ('inc/header.php');require (MYSQL);if ($_SERVER['REQUEST_METHOD'] == 'POST') {		$trimmed = array_map('trim', $_POST);	$errors = array();	if(empty($trimmed['wdate'])) {		$errors[] = '日期不能为空';	} else {		$w = mysqli_real_escape_string ($conn, $trimmed['wdate']);	}		if ( isset($trimmed['city']) && filter_var($trimmed['city'], FILTER_VALIDATE_INT, array('city' => 1)) ) {		$c = mysqli_real_escape_string ($conn, $trimmed['city']);;	} else {		$errors[] = '请选择区域';	}		if (is_numeric($trimmed['taoshu']) && ($trimmed['taoshu'] > 0)) {		$t = mysqli_real_escape_string ($conn, (int) $trimmed['taoshu']);	} else {		$errors[] = '请输入一个正确的套数';	}	if (is_numeric($trimmed['area']) && ($trimmed['area'] > 0)) {		$a = mysqli_real_escape_string ($conn, (float) $trimmed['area']);	} else {		$errors[] = '请输入一个正确的面积';	}			if (empty($errors)) {		$q = 'INSERT INTO f_chengjiao (city_id, area, taoshu, fang_time, os_time) VALUES (?, ?, ?, ?, ?, NOW())';		$stmt = mysqli_prepare($conn, $q);		mysqli_stmt_bind_param($stmt, 'idii', $c, $a, $t, $w);		mysqli_stmt_execute($stmt);		if (mysqli_stmt_affected_rows($stmt) == 1) {			echo '<p>这条数据已经被添加</p>';			$_POST = array();			} else {			echo '<p style="font-weight: bold; color: #C00">程序发生错误,请重新添加</p>'; 		}			mysqli_stmt_close($stmt);		}	} if ( !empty($errors) && is_array($errors) ) {	echo '<p style="font-weight: bold; color: #C00">发生下列错误:<br />';	foreach ($errors as $msg) {		echo " - $msg<br />\n";	}	echo '请在试一遍</p>';}?><div class="portlet wrap mT50">	<div class="portlet-title">住宅数据添加</div>	<div class="portlet-body">	<form action="zhuzhai_add.php" method="post">		<div class="control-group">			<label class="control-label">时间</label>			<div class="controls">				<input type="text" name="wdate" class="add-in" onClick="WdatePicker()" value="" />时间格式例如:2014-12-12			</div>		</div>         <div class="control-group">			<label class="control-label">区域</label>			<div class="controls">				<select name="city" class="select-city">                    <?php 					$q = "SELECT city_id, city_name FROM f_city ORDER BY city_id ASC";							$r = mysqli_query ($conn, $q) or trigger_error("Query: $q\n<br />MySQL Error: " . mysqli_error($conn));					if (@mysqli_num_rows($r) > 0) {						while ($row = mysqli_fetch_array ($r, MYSQLI_NUM)) {							echo "<option value=\"$row[0]\"";							if (isset($trimmed['city']) && ($trimmed['city'] == $row[0]) ) echo ' selected="selected"';							echo ">$row[1]</option>\n";						}						mysqli_free_result ($r);					} else {						echo '<option>暂无区域,请添加一个新地区</option>';					}					mysqli_close($conn);					?>				</select>			</div>		</div>        <div class="control-group">			<label class="control-label">套数</label>			<div class="controls">				<input type="text" name="taoshu" class="add-in" value="" />套			</div>		</div>         <div class="control-group">			<label class="control-label">面积</label>			<div class="controls">				<input type="text" name="area" class="add-in" value="" />平方			</div>		</div>         <div class="form-actions">            <button class="btn" name="submit" type="submit">提交</button>	   	</div>   	</form>    </div></div><?phpinclude ('inc/footer.php');?>



报错提示
出错文件是 'D:\wamp\www\zhuzhai_add.php' 出错行号是 36: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, boolean givenDate/Time: 9-11-2014 03:52:53Array(    [_GET] => Array        (        )    [_POST] => Array        (            [wdate] => 2014-09-11            [city] => 1            [taoshu] => 50            [area] => 10000            [submit] =>         )    [_COOKIE] => Array        (        )    [_FILES] => Array        (        )    [_ENV] => Array        (        )    [_REQUEST] => Array        (            [wdate] => 2014-09-11            [city] => 1            [taoshu] => 50            [area] => 10000            [submit] =>         )


回复讨论(解决方案)

你的$conn 在哪初始化的? 且inser 语句的字段与值个数没匹配上吧。

mysqli_stmt_bind_param($stmt, 'idi s', $c, $a, $t, $w);

你的$conn 在哪初始化的? 且inser 语句的字段与值个数没匹配上吧。


$conn是数据库连接
insert的确多了一个?,但是还是会报错

mysqli_stmt_bind_param($stmt, 'idi s', $c, $a, $t, $w);


修改成s也报错

你的$conn 在哪初始化的? 且inser 语句的字段与值个数没匹配上吧。


<?php//数据库连接信息DEFINE ('DB_HOST', 'localhost');	// 服务器地址 DEFINE ('DB_USER', 'root');			// 数据库用户名DEFINE ('DB_PASSWORD', '');			// 数据库密码DEFINE ('DB_NAME', 'fang01');			// 数据库名$conn = @mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); // 连接MYSQL数据库,选择指定的数据库if (!$conn) {	trigger_error ('Could not connect to MySQL: ' . mysqli_connect_error() );} else { 	mysqli_set_charset($conn, 'utf8'); // 设置字符集}?>

贴出修改后的sql串和错误信息

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn