我正在尝试从mysql中选择一个值 - 但是它不起作用:
public function doStuff($posted_name){
$result = mysql_query("SELECT id FROM people WHERE people_name = $posted_name");
$singleValue = mysql_fetch_object($result);
}
posted_name, people_name is TEXT, id is INT
我发布了$ posted_name,我让我们与表人员中的列people_name进行比较,然后选择列“id”......
我希望将此ID存储为值,此处我尝试将其存储在$ singleValue中...但是它不起作用 - 是否有任何错误?
解决:见评论
编辑:
我将一些代码更改为mysqli进行测试 - 但现在我有一些错误:
我的代码如下:
private $db;
// constructor
function __construct() {
include_once './db_connect.php';
// connecting to database
$db = new DB_Connect();
$this->db = $db->connect();
}
。 。 。 。
$result = this->db->query("INSERT INTO.....
上述行显示错误... 解析错误:语法错误,意外' - >' (T_OBJECT_OPERATOR)...
我做错了什么
我的db_connect.php
class DB_CONNECT {
private $db;
// constructor
function __construct() {
// connecting to database
$this->connect();
}
/**
* Function to connect with database
*/
function connect() {
// import database db variables
require_once __DIR__ . '/db_config.php';
// Connecting to mysql database
$this->db = new mysqli(DB_HOST, DB_USER, DB_PASSWORD);
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
// Selecing database
// returing connection cursor
return $this->db;
}
}
答案 0 :(得分:1)
您没有针对$posted_name
添加单引号,这样,此变量的任何值都将被视为MySQL关键字/数据库名称/表名称/字段名称。
如果值是字母值,则必须使用单引号。
更改
$result = mysql_query("SELECT id FROM people WHERE people_name = $posted_name");
要
$result = mysql_query("SELECT id FROM people WHERE people_name = '$posted_name'");
另外,请不要使用mysql_ *函数,因为出于安全原因这些函数已被弃用,并且将在以后的版本中删除。
答案 1 :(得分:1)
我认为它看起来应该更像:
$result = mysql_query("SELECT id FROM people WHERE people_name = '$posted_name' LIMIT 1");
注意$ post_name周围的引用。 但是在这种情况下你应该小心SQL注入,如果你没有清理你的输入,攻击者可以破解你的网站。所以我建议在SQL查询中使用它之前转义$ posted_name
答案 2 :(得分:1)
您需要在$ posting_name中添加单引号,如$" $ posted_name'。你应该知道mysql_fetch_object()是如何工作的以及它返回的是什么。
mysql_fetch_object()将结果行作为对象获取。它返回一个对象,该对象具有与获取的行对应的属性,并向前移动内部数据指针。
我已经编辑了你的代码......
public function doStuff($posted_name){
$result = mysql_query("SELECT id FROM people WHERE people_name = '$posted_name'");
if($result){
while ($row = mysql_fetch_object($result)){
$id = $row->id;
echo $id;
}
}
}
答案 3 :(得分:0)
我已编辑了您的代码,如下所示
class INSERT{
private $db;
//constructor
function __construct(){
include_once 'db_connect.php';
$this->db = new DB_CONNECT();
$this->db->connect();
}
function insert_data(){
$sql = "INSERT INTO.....";
$insert = $this->db->_insert_data($sql);
if($insert){
echo "data has been inserted";
}
}
}
$data = new INSERT();
$data->insert_data();
和db_config.php包括DB_HOST =>主机名,DB_USER =>数据库用户名,DB_PASSWORD =>数据库密码,DB_NAME =>数据库名称
class DB_CONNECT {
private $db;
// constructor
function __construct() {
// import database db variables
require_once __DIR__ . '/db_config.php';
}
/**
* Function to connect with database
*/
function connect() {
// Connecting to mysql database and selecting the database
$this->db = new mysqli(DB_HOST, DB_USER, DB_PASSWORD,DB_NAME);
$this->check_error();
}
/**
* Function to check the mysqli error
*/
function check_error(){
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
}
/**
* Function to run the query
*/
function _run_query($query){
return mysqli_query( $this->db , $query);
}
/**
* Function to insert data in the database
*/
function _insert_data($statement){
$result = $this->_run_query($statement);
if(mysqli_affected_rows( $this->db ) == 1){
return true;
}else{
return false;
}
}
}