Php 数据根本没有输入数据库?
我对目前正在进行的一个项目有一个奇怪的问题。所有代码都会运行,不会出错,但值不会用INSERT语句输入数据库 代码如下: php(调用查询的文件):Php 数据根本没有输入数据库?,php,mysqli,Php,Mysqli,我对目前正在进行的一个项目有一个奇怪的问题。所有代码都会运行,不会出错,但值不会用INSERT语句输入数据库 代码如下: php(调用查询的文件): 当我收到电子邮件时,pipe.php中的所有其他代码行都会运行,但是没有数据添加到数据库中。有人知道原因吗?如果有,我如何才能使其插入数据?您需要在变量的名称中添加简单的引号:ticket\u id='$id'如果希望在数据中转义这些引号,您应该使用单引号和mysql\u real\u escape\u string方法。这里有一个例子: $ema
当我收到电子邮件时,pipe.php中的所有其他代码行都会运行,但是没有数据添加到数据库中。有人知道原因吗?如果有,我如何才能使其插入数据?您需要在变量的名称中添加简单的引号:
ticket\u id='$id'
如果希望在数据中转义这些引号,您应该使用单引号和mysql\u real\u escape\u string
方法。这里有一个例子:
$emailbody = mysql_real_escape_string($mail->getPlainBody());
$emailsubject = mysql_real_escape_string($mail->getSubject());
$from = mysql_real_escape_string($mail->getHeader("From"));
$db->query("INSERT INTO tickets VALUES ($id, '$emailsubject', '$emailbody', '$from')");
从:
mysql_real_escape_string-为一个字符串中的特殊字符进行转义
在SQL语句中使用
为什么在
INSERT
query中有反斜杠?@str将PHP的括号转义。你不必这样做。@str D'oh!我记得。。。现在。票证id设置为int.2。我对Insert语句有问题。是的,即使$id
包含int,也需要用简单的引号括起来,否则。。。查询将不会插入数据。$db->query(“插入票证值\($id、$emailsubject、$emailbody、$from\)”代码>将是$db->query(“插入票据值('$id'、'$emailsubject'、'$emailbody'、'$from'))代码>我的头撞到了所有的东西:P多尴尬啊!谢谢:)
<?php
class Db
{
private $link;
/**
* Constructor.
* @param array $dbconfig Array of database configuration:
*
* host - database host
* user - database user
* password - database user password
* dbname - database name
* port - database server port
*/
public function __construct(array $dbconfig)
{
$this->link = mysqli_connect($dbconfig['host'], $dbconfig['user'], $dbconfig['password'], $dbconfig['dbname'], $dbconfig['port']);
if (!$this->link)
{
throw new DatabaseException("Unable to connect to database, please check the settings in the config.php file!");
}
}
/**
* Query the database
* @param string $query SQL query to run
* @return mysqli_result
*/
public function query($query)
{
$result = mysqli_query($this->link, $query);
$this->checkError();
return $result;
}
/**
* Gets the first row of a query.
* @param string $query SQL query
* @return array Enumeriated array of first row contents.
*/
public function query_first($query)
{
$result = mysqli_fetch_row($this->query($query));
$this->checkError();
return $result;
}
/**
* Gets the first row of a query as an associative array
* @param string $query SQL Query
* @return array Associative array of row. Column name->column value.
*/
public function query_assoc($query)
{
$result = mysqli_fetch_assoc($this->query($query));
$this->checkError();
return $result;
}
/**
* Gets all results as array.
* @param unknown $query
* @param string $resulttype
* @return array
*/
public function query_all($query)
{
if (function_exists('mysqli_fetch_all')) # Compatibility layer with PHP < 5.3
$res = mysqli_fetch_all($this->query($query));
else
for ($res = array(); $tmp = mysqli_fetch_array($this->query($query));) $res[] = $tmp;
return $res;
}
public function checkError()
{
if ($this->error != '')
{
throw new DatabaseException("Database Error(s) Occured: $this->error");
}
}
/**
* Get this instance of this object.
* @return Db
*/
public static function _getInstance()
{
return $this;
}
public function __get($name)
{
switch ($name) {
case "error":
$this->error = mysqli_error($this->link);
break;
}
}
}
$emailbody = mysql_real_escape_string($mail->getPlainBody());
$emailsubject = mysql_real_escape_string($mail->getSubject());
$from = mysql_real_escape_string($mail->getHeader("From"));
$db->query("INSERT INTO tickets VALUES ($id, '$emailsubject', '$emailbody', '$from')");